你能够在网上找到大量炫酷的Docker 工具,而且大部分是开源的,能够经过Github访问。在过去的两年里,我开始在开发项目中大量使用Docker。当你开始使用Docker,你会发现它比你想象的还要适合于更多的使用场景。你也许但愿Docker可以作的更多,固然你不会失望。html
Docker社区很是活跃,天天都会推出大量有用的工具。要想持续追踪社区中发生的各项创新其实很是困难。为了帮助你,我收集了一些天天在平常工做中使用、使人感兴趣而且十分有用的Docker工具。这些工具消除了大量手工工做,让我更有生产力。git
让咱们来看看这些在个人容器化之旅中很是有用的工具吧。github
瞭望塔(Watchtower)可以监控正在运行的容器,观察自容器启动以来对镜像的任何修改。当瞭望塔检测到一个镜像发生改变,它会自动使用新镜像进行重启容器。我在本地开发环境使用该工具,以便我可以使用最新构建的镜像。docker
瞭望塔自己也被打包为一个Docker镜像,你可使用运行其余容器的方式运行该工具。要启动瞭望塔,你可使用如下命令:工具
在上述命令中,咱们启动了瞭望塔容器,并挂载了文件 /var/run/docker.sock 。这是必须的,以便该工具可以与Docker后台API进行交互。此处使用选项间隔(interval)为30秒。该参数定义了工具轮询的间隔。瞭望塔支持的更多选项见 文档.学习
如今启动一个瞭望塔可以监控的容器:
spa
此时,瞭望塔将对friendlyhello容器进行监控。当我将新镜像提交到Docker Hub时,瞭望塔在下次运行时将会检测到已有一个新的镜像。它会优雅的中止容器,并使用新镜像自动启动新容器。它将一些参数传递给run命令,换句话说,容器将使用4000:80发布端口。命令行
默认状况下, 瞭望塔会轮询Docker Hub官网查找更新的镜像。如欲使工具轮询私有Docker仓库,须要配置如下环境变量:REPO_USER 和 REPO_PASS。调试
想要了解更多,推荐阅读 瞭望塔文档。htm
docker-gc工具可以帮助你清理Docker宿主机,删除再也不须要的容器和镜像。它会移除存在超过1小时的全部容器。同时,它会删除不属于任何遗留容器的镜像。
你能够把docker-gc当作脚本或容器使用。这里,咱们做为容器运行docker-gc。使用docker-gc查找全部能够删除的容器和镜像,命令以下:
上述命令中,咱们加载了Docker套接字文件,以便docker-gc可以与Docker API交互。咱们传递一个环境变量DRY_RUN=1来查找将被删除的容器和镜像。若是不提供该参数,docker-gc会删除全部容器和镜像。最好事先确认docker-gc要删除的内容。上述命令输出示意以下:
若是你赞成docker-gc清空方案, 能够不使用DRY_RUN再次运行docker-gc执行清空操做。
docker-gc还支持其余一些选项,建议阅读 docker-gc文档以了解更多。
若是你担忧您Docker镜像的大小,docker-slim能够打消您的一切顾虑。
docker-slim工具使用静态和动态分析方法来为你臃肿的镜像瘦身。要使用docker-slim,能够从
Github
下载Linux或者Mac的二进制安装包. 一旦你成功下载,并加入到你的系统PATH变量中。
为了举例,我参考
Docker官方文档
建立了一个Docker镜像 friendlyhello , 镜像大小为194MB(以下所示):
在这个简单的应用中,咱们已经下载了194MB的数据。让咱们使用docker-slim工具来看看可以瘦身多少吧。
本身试试看可以瘦身多少。在个人我的项目中,我发如今大多数状况下都可以正常工做。您能够从 docker-slim文档学到更多。
大多数使用Docker的开发者都使用Dockerfile构建镜像。Dockerfile是一种声明方式,在命令行定义全部的命令,以编配一个镜像。
Rocker 为Dockerfile指令集增长了新的指令。Rocker由
Grammarly
建立,以解决采用Dockerfile格式遇到的一些问题。Grammarly团队写了一个
博客
,深度剖析和解释了建立它的缘由。我建议您阅读它以更好的理解Rocker。在博文中,他们主要强调了2个问题:
Docker镜像的大小.
缓慢的构建速度.
该博文也提到了Rocker增长的几个新指令。参考
Rocker文档
以学习全部Rocker支持的指令。
MOUNT 用于共享不一样构建的卷,以便可以被依赖管理工具重用。
FROM 指令在Dockerfile也存在。Rocker使得能够添加多个FROM指令。 这意味着您可以从单个Rockerfile中建立多个镜像。第一批指令用于构建产品全部的依赖;第二批指令用于构建产品;这可以极大的下降镜像大小。
TAG 用于在构建的不一样阶段标识镜像,这意味着您没必要手动为每一个镜像打标签。
PUSH 用于将镜像推送到镜像仓库。
ATTACH 容许您可以交互的运行一个中间步骤,主要用于调试。
要使用Rocker,首先必须安装。对Mac用户来讲,使用brew安装命令很是简单:
一旦完成安装,您就可使用Rocker传递Rockerfile来构建镜像:
Rocker有不少功能,要知道更多请参考 文档。
ctop是我最近使用的一个工具,它可以提供多个容器的实时指标视图。若是您是一个Mac用户,可使用brew安装:
一旦完成安装,你能够启动ctop。它只须要配置DOCKER_HOST环境变量。
要查看全部容器的状态,能够直接运行 ctop 命令。
仅查看当前正在运行的容器的状态,可使用 ctop -a 命令。
ctop是一个简单而且很是有用的工具,可以帮助您了解主机上运行的容器。能够阅读 ctop文档了解更多ctop的知识。
这些都是我发现的很是有用的Docker工具。您是否也在平常工做中用到其余的Docker工具呢?若是是这样的话,请在下面的评论区留言以让咱们知晓。