5个你必须知道的Docker实用工具

原文:5 Docker Utilities You Should Know 作者:Shekhar Gulati 翻译:Vincent

Docker社区已经创建了许多开源的工具,更多的用例使得它比您想像的更有用。你可以在这里查阅它们。

你在网上能找到很多酷炫的Docker工具。绝大多数是开源的。 过去两年,我已经积极地将Docker用到我的对大多数开发项目中。在你开始使用 Docker的时候,你会发现,它比你预想的更加适用在很多用例里。 你会希望Docker为你做的更多,而且它不会让你失望!

Docker社区非常活跃,每天都有很多有用的工具。在这个社区你很难知道哪些发生了革新。为了帮助你,我已经收集了我日常工作中用到的很有趣很实用的Docker工具。这些让我工作更加高效,消除了很多的手动工作。

让我们来看看我在使用Dockerize工具的过程中发现的每个工具。

1watchtower:自动更新Docker容器

Watchtower监视运行中的容器,以便于对容器最初的镜像进行更改。当Watchtower检测到镜像发生改变时,会自动使用新的镜像重启容器。 我在本地开发中想要创建新的镜像就会使用它。

Watchtower本身会打包成Docker映像,所以您可以运行它,就像运行任何其他容器一样。当你要运行Watchtower,您将会用到下面的指令:

在上面的命令中,我们启动了一个带有挂载文件/var/run/docker.sock . 的Watchtower容器。这个步骤是必须的,通过设置30秒的时间间隔选项,为了能够让Watchtower可以和Docker守护进程API进行交互。这个时间定义了Watchtower 的轮询时间。Watchtower里面有很多的这样的选项设置,你可以按照文档所述使用它们。

现在我们就开始让Watchtower去监视一个容器:

Watchtower将要开始监视friendlyhello这个容器。当我将新的镜像推送到Docker Hub时,Watchtower将在下一次运行时检测到有新的镜像可用,它将停止容器,并使用新的镜像启动容器,它会传递给我们运行命令行时的选项设置。换句话说,容器将以4000:80端口启动。

默认情况下,Watchtower将轮询Docker Hub注册表以查找更新的镜像。您可以通过将注册表凭据传递给环境变量REPO_USER和REPO_PASS来配置Watchtower,让它去轮询私有注册表。要了解更多关于Watchtower的信息,我建议您去查看Watchtower文档。

2docker-gc:容器和镜像的垃圾回收

docker-gc实用程序会帮助你清理Docker主机,去除那些没用的容器和镜像文件。它会删除一个多小时前存在的所有容器。此外,它还会删除不属于任何剩余容器的 镜像。

您可以将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-gc文档以了解更多信息。

3docker-slim:容器的魔法丸

如果担心Docker镜像的大小,docker-slim将会解决您的担忧。

docker-slim实用程序使用静态和动态分析来将大的镜像转变为缩略的镜像。要使用docker-slim,您必须从Github下载其二进制文件。二进制文件可用于Linux和Mac。下载二进制文件后,将其添加到PATH中。

我创建了一个Docker图像,例如:使用在Docker官方文档中的应用程序friendlyhello。正如你下面所看到的镜像的大小是194MB。

您可以看到一个简单的应用程序,我们必须下载194 MB的数据。让我们用docker-slim来看看它可以去除多少多余的东西。

docker-slim实用程序将执行一系列步骤 -检查、分析较大的镜像,最终创建一个缩略版本的镜像。我们来看下这个缩略版的大小。

正如你上面看到的,这个镜像的大小被所缩减到24.9MB。您可以启动容器,并以相同的方式运行。docker-slim实用程序适用于Java,Python,Ruby和Node.js应用程序。

尝试一下,看看你有没有收获。在我的个人项目中,我发现它在大多数情况下都有效。 您可以从其文档中了解更多关于docker-slim的信息。

4rocker:打破Dockerfile的限制

大多数使用Docker的开发人员使用Dockerfile构建镜像。Dockerfile是一种声明式的方式来定义用户可以在命令行中调用的所有命令,以便组装镜像。

Rocker向Dockerfile指令集添加了新的指令。 Rocker是由Grammarly创建的,用于解决Dockerfile格式所面临的问题。Grammarly团队写了一篇深入博客,解释了创建它的原因。我建议你阅读它,以更好地了解Rocker。

他们在帖子中强调的两个问题是:

1、Docker镜像的大小。

2、构建速度缓慢。

博客还提到了Rocker添加的一些新指令。请参阅Rocker文档,了解Rocker支持的所有说明。

1、MOUNT用于在构建之间共享卷,以便它们可以重用依赖关系管理工具。

2、在Dockerfile中也存在FROM指令。Rocker可以添加多个FROM指令。这意味着您可以从单个Rockerfile创建多个镜像,第一组指令将使用所有依赖关系构建工件。 第二组指令可以使用构建工件,这大大降低了镜像的大小。

3、TAG用于构建不同阶段标记镜像,这意味着您不必手动标记镜像。

4、PUSH用于将镜像推送到注册表。

5、ATTACH允许您以交互方式运行中间步骤,这对调试非常有用。

要使用Rocker,您必须将它安装在你的机器上。对于Mac用户来说,就像运行几个brew命令一样简单:

一旦安装,您可以使用Rocker通过将其传递给Rockerfile来构建镜像:

要构建映像并将其推送到Docker Hub,可以运行以下命令:

Rocker有一套很好的功能。 要了解更多信息,请参阅其文档

5ctop:容器顶部接口

最近我开始使用的实用 程序是ctop,它提供了多个容器的实时度量视图。如果你是一个mac用户,那么你可以使用brew安装ctop,如下所示。

一旦安装,您可以开始使用ctop。它只需要配置DOCKER_HOST环境变量。要查看所有容器的状态,可以运行ctop命令。

要仅查看正在运行的容器,可以使用ctop -a命令。

ctop是一个简单的实用程序,非常有用,可以了解在主机上运行的容器。您可以在ctop文档中阅读更多信息。

作者:钱曙光

来源:http://geek.csdn.net/news/detail/200008

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构

微服务架构基于Nginx、Node.js和Redis的Docker工作流

2795
来自专栏宝哥的专栏

Docker系列学习文章 - docker镜像基本操作(五)

| 导语上一篇文章我们讲解了如何简单运行一个Nginx、Mysql、Redis容器服务。我们运行的很顺利,因为我们就用了一条命令就搞定了。确实,docker就是...

1.5K26
来自专栏LuckQI

容器Docker学习系列三~每天几个小命令

今天继续学习我们的Docker命令,在简单的了解命令后我们会开始实战操作执行Docker容器,应用起来我们的命令。今天继续学习六大部门Docker命令中的本地镜...

2132
来自专栏java闲聊

Windows10下Dcoker的安装、使用

1864
来自专栏快乐八哥

Docker Hub工作流程-Docker for Web Developers(6)

在Github上创建项目仓库 和创建其他Github项目一样,在Github创建一个仓库,然后在仓库里面增加一个dockerfile,然后提交并推送到Githu...

2117
来自专栏散尽浮华

Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)

自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求。容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容...

1.2K11
来自专栏测试驿栈

Docker_部署jenkins(dockerfile实现)

我用的是ubuntu14.04的基础镜像,并且在基础镜像中已经把ant,tomcat,jdk的安装包配置好了。具体的这里不做赘述。

1.7K3
来自专栏小狼的世界

Docker 概述

Docker 是一个应用程序开发、部署、运行的平台,使用 go 语言开发。相较于传统的主机虚拟化,Docker 提供了轻量级的应用隔离方案,并且为我们提供了应用...

1193
来自专栏北京马哥教育

Docker 完全指南

Docker 作为新瓶装旧酒的一门技术,用简单便捷的操作极大改变了软件开发的流程与生态环境,本文我们就来了解一下。注:Docker 目前已改名为 Moby。

1595
来自专栏宝哥的专栏

Docker系列学习文章 - 专业化定制镜像dockerfile(六)

| 导语上一篇我们跟大家讲了docker镜像,关于镜像的特点和作用我想大家都明白了。那么如何比较专业的去定制我们需要的镜像呢?用commit?不对,我们说过这个...

1.5K27

扫码关注云+社区

领取腾讯云代金券