五个你应该知道的Docker实用工具

简介: 本文讲的是五个你应该知道的Docker实用工具【编者的话】文章介绍了作者工作中收集到的一些有趣而实用的Docker工具。
本文讲的是五个你应该知道的Docker实用工具【编者的话】文章介绍了作者工作中收集到的一些有趣而实用的Docker工具。

【3 天烧脑式 Docker 训练营 | 上海站】随着Docker技术被越来越多的人所认可,其应用的范围也越来越广泛。本次培训我们理论结合实践,从Docker应该场景、持续部署与交付、如何提升测试效率、存储、网络、监控、安全等角度进行。

网上有很多不错的Docker工具,大部分在GitHub上都是开源的。最近两年,我一直在使用Docker,并将其应用到了一些开发项目上。如果你刚开始使用Docker,你会发现它能应用到的实例远远多于预想。Docker能为你做更多,不会让你失望的!

Docker社区非常活跃,每天都有许多新的实用工具出现。因此,天天去检查更新,试图跟上社区的步伐确实有点困难。所以我在此分享在工作中收集到的一些有趣而实用的Docker工具,帮助大家提高日常工作效率。

下面开始一一介绍我在使用Docker的过程中找到的有用工具吧。

1. Watchtower:自动更新Docker容器

Watchtower监视容器运行过程,并且能够捕捉到容器中的变化。当Watchtower检测到有镜像发生变化,会自动使用新镜像重启容器。我在本地开发环境中创建的最后一个镜像就用到了Watchtower。

Watchtower本身就像一个Docker镜像,所以它启动容器的方式和别的镜像无异。运行Watchtower的命令如下:
01.png

上面的代码中,我们用到了一个安装文件 /var/run/docker.sock 。这个文件主要用来使Watchtower与Docker后台API交互。  interval 30秒的选项主要用来定义Watchtower的轮询间隔时间。Watchtower还支持一些别的选项,具体可以查看他们的 文档

现在,开启一个容器,用Watchtower来监控。
02.png

Watchtower会开始监控 friendlyhello 容器。接下来我把新镜像push到Docker Hub,Watchtower接下来就会检测到有新镜像可用。它会关掉容器,然后用新镜像重启容器。这里会用到我们刚刚传到运行命令中的选项,换句话说,容器会在 4000:80  公共端口选项上开启。

默认情况下,Watchtower会轮询Dockder Hub注册表查找更新的镜像。你也可以通过在环境变量REPO_USER和REPO_PASS中添加指定注册表证书,来设置Watchtower轮询私有注册表。

了解更多Watchtower的用法,我推荐 Watchtower文档

2. docker-gc:收集垃圾容器和镜像

docker-gc工具能够帮助Docker host清理不需要的容器和镜像。它可以删除存在一小时以上的容器。同时,它也可以删除没有容器的镜像。

docker-gc可以被当做脚本,也可以被视为容器。我们用容器方法运行docker-gc,用它来查找可以被删除的容器和镜像。
03.png

在上述命令中,我们安装Docker socket文件,这样docker-gc就可以和Docker API进行交互。设置环境变量 DRY_RUN=1 ,查找可被删除的容器和镜像。如果我们不这样设置,docker-gc直接删除它们。所以在删除之前,还是先确认一下。以上代码的输出结果如下:
04.png

确认需要删除的容器和镜像之后,再次运行docker-gc来进行删除清理,这次就不用再设置DRY_RUN参数了。
05.png

上述命令运行后的输出会告诉你哪些容器和镜像已经被docker-gc删除。

了解更多docker-gc支持的选项,我推荐阅读 docker-gc documentation

3. docker-slim:给你的容器瘦身

如果你对Docker镜像的大小有过担忧,docker-slim绝对是一丸灵丹妙药。

docker-slim工具可以通过静态和动态分析,针对你的“胖镜像”创建对应的“瘦镜像”。在 Github 上下载二进制文件,即可使用docker-slim。该二进制文件在Linux和Mac可用。下载之后添加到路径PATH。

我创建了一个Docker镜像示例应用“friendlyhello”, Docker官方文档 中有用到。这个镜像的大小如下图所示,194MB。
06.png

这么简单的一个应用,我们就要下载194MB的数据。再来看看docker-slim究竟能让它“瘦”多少。
07.png

docker-slim工具先是对“胖镜像”进行一系列的检测,最终创建了对应的“瘦镜像”。看一下“瘦镜像”的大小:
08.png

正如上图所示,“瘦镜像”大小为24.9MB。开启容器,运行照旧。docker-slim对Java、Python、Ruby和Node.js应用都非常友好。

你自己也试一下吧,看看结果如何。以我个人的项目来说,我认为docker-slim在大部分情况下都能适用。阅读 docker-slim文档 了解更多。

4. Rocker:打破Dockerfile限制

很多Docker用户都用Dockerfile来构建镜像。Dockerfile是定义命令的声明方式,通过在命令行调用这些命令,可以对镜像进行操作。

Rocker给Dockerfile的指令集增加了新的指令。Rocker是由 Grammaryly 创建的,原意是用来解决Dockerfile格式的问题。Grammaryly团队写过一篇 博客 解释当初的动机。我建议你也看一下这篇博客,可以更好的理解Rocker。他们在博客中提出的两个关键问题是:
  • Docker镜像的大小
  • 构建速度缓慢

博客还提到了Rocker添加的一些新指令。查看 Rocker文档 了解更多。
  • MOUNT用来分享volume,这样依赖管理工具就可以重用。
  • FROM指令在Dockerfile中也存在。Rocker添加了不止一条FROM指令。这就意味着,一个Rockerfile可以通过创建多个镜像。首个指令集使用所有依赖来创建artifact,第二个指令集可以使用已有的artifact。这种做法极大的降低了镜像的大小。
  • TAG用来标记处于不同构建阶段的镜像。这样一来就不在需要手动标记镜像了。
  • PUSH用来把镜像push到registry。
  • ATTACH用来和中间步骤交互,在debug的时候非常有用。

安装rocker,对Mac用户来说,只要运行几条brew命令就行了:
09.png

安装完成后,就可以使用rocker创建镜像。
10.png

创建镜像并将其push到Docker Hub,可以用下面这条命令:
11.png

Rocker功能十分完备,了解更多,请参阅其 文档

5. ctop:容器的顶层界面工具

ctop是我最近才开始使用的工具,它可以为多个容器提供实时显示的数据视图。如果你是Mac用户,可以按下面的命令安装ctop。
12.png

安装之后,只需配置 DOCKER_HOST 环境变量,即可使用ctop。

运行 ctop 命令,可以查看所有容器的状态。
13.png

运行 ctop-a 命令,可以仅查看当前运行的容器。

ctop简单好用,查看机器上运行的容器非常方便。了解更多,请看 ctop文档

以上,就是我觉得比较有用的Docker工具了。如果你也用到过一些好用的Docker工具,不妨在评论区告诉我们吧。

原文链接:5 Docker Utilities You Should Know(翻译:马远征)

原文发布时间为2017-05-27

本文作者:马远征

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:五个你应该知道的Docker实用工具

相关文章
|
1月前
|
测试技术 API 开发者
【Docker项目实战】在Docker环境下部署go-file文件分享工具
【2月更文挑战第15天】在Docker环境下部署go-file文件分享工具
67 1
|
1月前
|
安全 测试技术 数据安全/隐私保护
【好用的个人工具】Docker环境下部署FileDrop文件共享工具
【2月更文挑战第13天】Docker环境下部署FileDrop文件共享工具
63 2
|
1月前
|
JavaScript 测试技术 数据安全/隐私保护
【Docker项目实战】使用Docker部署Mikochi文件管理工具
【2月更文挑战第12天】使用Docker部署Mikochi文件管理工具
77 5
|
3月前
|
存储 Cloud Native Docker
百度搜索:蓝易云【云原生之使用Docker部署Notepad个人任务管理工具】
这样,你就成功地使用Docker部署了Notepad个人任务管理工具。通过Docker部署Notepad可以使应用的安装和配置更加便捷,并且可以隔离应用环境,避免影响到宿主机的系统。希望以上教程对你有所帮助!如果你有其他问题,请随时继续提问。
56 0
|
4月前
|
程序员 Linux Docker
使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
|
4月前
|
Devops 网络安全 Docker
百度搜索:蓝易云【DevOps系列文章之Docker部署web ssh工具sshwifty教程。】
同时,了解DevOps和Docker的基本原理和概念也对你进行部署和管理这样的工具非常有帮助。你可以进一步研究Docker容器化技术和相关的DevOps实践,以更好地理解和应用这些概念。
55 0
|
3月前
|
存储 Kubernetes C++
Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
当今,容器化技术已成为IT领域的热门话题,而容器编排工具是实现容器自动化部署和管理的关键。本文将比较两种主流的容器编排工具Kubernetes和Docker Swarm,并探讨它们的优缺点,以帮助你选择最适合自己的工具。
|
3月前
|
Kubernetes 调度 C++
Kubernetes vs Docker Swarm:容器编排工具的比较与选择
在当今云计算时代,容器技术的应用越来越广泛。而在众多容器编排工具中,Kubernetes和Docker Swarm是两个备受关注的竞争者。本文将深入比较这两个工具的特点、优势和劣势,帮助读者更好地选择适合自己的容器编排解决方案。
|
4月前
|
程序员 Linux Docker
使用Docker本地安装部署Drawio绘图工具并实现公网访问
使用Docker本地安装部署Drawio绘图工具并实现公网访问
236 0
|
1月前
|
缓存 监控 测试技术
【Docker管理工具】安装Docker磁盘使用仪表板Doku
【2月更文挑战第14天】安装Docker磁盘使用仪表板Doku
84 2