你应该知道的 5 个 Docker 工具

你可以在网上找到大量炫酷的Docker 工具,并且大部分是开源的,可以通过Github访问。在过去的两年里,我开始在开发项目中大量使用Docker。当你开始使用Docker,你会发现它比你想象的还要适合于更多的使用场景。你也许希望Docker能够做的更多,当然你不会失望。

Docker社区非常活跃,每天都会推出大量有用的工具。要想持续追踪社区中发生的各项创新其实非常困难。为了帮助你,我收集了一些每天在日常工作中使用、令人感兴趣并且十分有用的Docker工具。这些工具消除了大量手工工作,让我更有生产力。 
让我们来看看这些在我的容器化之旅中非常有用的工具吧。

  1. watchtower: 自动更新Docker容器

瞭望塔(Watchtower)能够监控正在运行的容器,观察自容器启动以来对镜像的任何修改。当瞭望塔检测到一个镜像发生改变,它会自动使用新镜像进行重启容器。我在本地开发环境使用该工具,以便我能够使用最新构建的镜像。

瞭望塔本身也被打包为一个Docker镜像,你可以使用运行其他容器的方式运行该工具。要启动瞭望塔,你可以使用以下命令: 

在上述命令中,我们启动了瞭望塔容器,并挂载了文件 /var/run/docker.sock 。这是必须的,以便该工具能够与Docker后台API进行交互。此处使用选项间隔(interval)为30秒。该参数定义了工具轮询的间隔。瞭望塔支持的更多选项见文档.

现在启动一个瞭望塔能够监控的容器: 

此时,瞭望塔将对friendlyhello容器进行监控。当我将新镜像提交到Docker Hub时,瞭望塔在下次运行时将会检测到已有一个新的镜像。它会优雅的停止容器,并使用新镜像自动启动新容器。它将一些参数传递给run命令,换句话说,容器将使用4000:80发布端口。

默认情况下, 瞭望塔会轮询Docker Hub官网查找更新的镜像。如欲使工具轮询私有Docker仓库,需要配置以下环境变量:REPO_USER 和 REPO_PASS。

要先了解更多,推荐阅读瞭望塔文档。 
2. docker-gc: 容器和镜像垃圾收集

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-gc文档以了解更多。 
3. docker-slim: 面向容器的神奇减肥药丸

如果你担心您Docker镜像的大小,docker-slim可以打消您的一切顾虑。

docker-slim工具使用静态和动态分析方法来为你臃肿的镜像瘦身。要使用docker-slim,可以从Github下载Linux或者Mac的二进制安装包. 一旦你成功下载,并加入到你的系统PATH变量中。

为了举例,我参考Docker官方文档创建了一个Docker镜像 friendlyhello , 镜像大小为194MB(如下所示): 

在这个简单的应用中,我们已经下载了194MB的数据。让我们使用docker-slim工具来看看能够瘦身多少吧。 

docker-slim工具将执行一系列的检查和装配步骤,最终创建一个瘦身版本。让我们来看看搜身版本的大小: 

如上图所示,影像大小被减少到24.9 MB。你可以启动该容器,以同样的方式运行。docker-slim工具支持Java, Python, Ruby和Node.js应用。

自己试试看能够瘦身多少。在我的个人项目中,我发现在大多数情况下都能够正常工作。您可以从 docker-slim文档学到更多。

  1. rocker: 超越 Dockerfile 限制

大多数使用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来构建镜像: 

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

Rocker有很多功能,要知道更多请参考文档。

  1. ctop: 容器的类Top界面

ctop是我最近使用的一个工具,它能够提供多个容器的实时指标视图。如果您是一个Mac用户,可以使用brew安装: 

一旦完成安装,你可以启动ctop。它只需要配置DOCKER_HOST环境变量。 
要查看所有容器的状态,可以直接运行 ctop 命令。 

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

ctop是一个简单并且非常有用的工具,能够帮助您了解主机上运行的容器。可以阅读 ctop文档了解更多ctop的知识。

http://geek.csdn.net/news/detail/227903

时间: 2024-12-28 14:00:10

你应该知道的 5 个 Docker 工具的相关文章

超实用!K8s 开发者必须知道的 6 个开源工具

文章来源:云原生实验室,点击查看原文. 导读:Kubernetes 作为云原生时代的"操作系统",熟悉和使用它是每名用户(User)的必备技能.如果你正在 Kubernetes 上工作,你需要正确的工具和技巧来确保 Kubernetes 集群的高可用以及工作负载的稳定运行.本篇文章将为你详细介绍 6 个实用的 Kubernetes 开源工具,千万不要错过. 前言 随着 Kubernetes 的发展和演变,人们可以从内部来驯服它的无节制行为.但有些人并不情愿干等 Kubernetes 变

PHP开发者该知道的5个Composer小技巧

Composer 是新一代的PHP依赖管理工具.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单 composer update foo/bar 此外,这个技巧还可以用来解决“警告信息问题”.你一定见过这样的警告信息: Warning: The lock file is not up to date with the latest changes in composer.json, you may

使用Yeoman你必须要知道的

不得不说,这年头写JS程序变得越来越复杂了.虽然大家都为了让写JS变得更简单而创建框架.创建工具,但是感觉已经开始偏离了最初的目的. 今天来说说Yeoman,一帮人为了让写AngularJS程序更高端智能而创建的一个工具.可以利用简单的命令行操作帮你初始化一个Angular App,CSS.图片.View和JS应该放哪都帮你决定好了,连复杂的Grunt都帮你配好了.前端同志只要用"grunt serve"就可以预览你的Web App而不用配置Web服务器,用"grunt bu

在开发第一个Android应用之前需要知道的5件事:

你能否详细讲述一下,在开发Android应用过程中每一阶段要用到的技能和编程语言? 建立一个Android应用程序可以归结为两个主要技能/语言:Java和Android系统.Java是Android的通用编程语言,但是Android还包括学习用于app界面设计的XML语言,学习Android概念,以及从Java编程角度运用这些概念. 学了Java和XML之后,再用Android理念将两者连接起来. 我也有分享过一些学习Activities和 Fragments等的Android相关知识.我最喜欢

(转) Java程序员应该知道的10个调试技巧

原地址:http://www.csdn.net/article/2012-09-03/2809495-java-debugging-tips-with-eclipse 调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在开始之前,推荐大家去看看Eclipse shortcuts这篇文章,它将会给你带来很多方便.在本文中使用的是Ecli

第二季来袭:奶茶妹妹都用Lync开会了,你们一定要知道的Lync会议的秘密噢~

大家对第一季的关注促使我继续编写第二季,感觉有点像美剧,收视率高我们就继续,哈哈~~写点啥,Lync内容太多了,最近听说奶茶妹妹入职微软了都在使用Lync开会了,那我们就一起谈谈Lync会议的秘密吧! 秘密1:你可以通过视频看到奶茶妹妹噢,还可以设置为重点关注对象. 从Lync 2013开始我们可以支持高清视频了哈,用户在会议过程中视频分辨率最高能够达到1080P级别,也就是1920 x 1080的全高清分辨率噢.另外,在Lync 2013我们可以支持多路视频,可以同时展示5个发言者的视频,并可

PDB文件:每个开发人员都必须知道的 PDB Files

PDB文件:每个开发人员都必须知道的 PDB Files: What Every Developer Must Knowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx PDB文件:每个开发人员都必须知道的 一 什么是PDB文件 大部分的开发人员应该都知道PDB文件是用来帮助软件的调试的.但是他究竟是如何工作的呢,我们可能并不熟悉

[转]在做自动化测试之前你需要知道的

[转]在做自动化测试之前你需要知道的 2015-06-09 转自:在做自动化测试之前你需要知道的 什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner.jmeter),或自己所写的一段程序,用于生成1到100个测试数据.

软件测试人员应该知道的

软件测试人员应该居安思危 每当经济不好,公司业绩不好的时候,公司都可能进行裁员. 首先裁的就是测试人员. 因为测试人员的技术水平相对来说比较低,容易被替代,招起来也比较容易.,公司往往先拿测试人员开刀.身为测试人员,虽然我们平常的工作大部分都比较安逸. 但是千万不能温水煮青蛙. 应该自强不息, 要像开发人员一样, 不断学习,提高自己的编程水平.这样就算被裁也能很快找到新的工作. 测试人员应该比开发人员更熟悉业务需求 测试人员的水平主要体现在测试用例的设计上. 要设计出全面,覆盖广的测试用例,需要