写点什么

推荐 5 款好用的开源 Docker 工具

  • 2019-12-16
  • 本文字数:3383 字

    阅读完需:约 11 分钟

推荐5款好用的开源Docker工具

你可以在网上找到很多酷炫的 Docker 工具,其中大部分是开源的,都可以在 Github 上找到。在过去的两年里,我非常热衷于 Docker,在大多数开发项目中都使用了它。当你开始使用 Docker 后,你会发现它适用的场景比你最初预想的还更多。你会希望 Docker 尽可能为你多做一点事,而它不会让你失望的!


Docker 社区非常活跃,每天都会出现许多有用的工具,时时关注社区中发生的所有创新是很困难的。为了帮助你,我收集了一些我在日常工作中使用的又有趣又实用的 Docker 工具,这些工具提升了我的工作效率,减少了原本需要手工完成的工作。


以下就是我要向大家推荐的五款实用工具。

watchtower:自动更新 Docker 容器

Watchtower 监视运行容器并监视这些容器最初启动时的镜像有没有变动。当 Watchtower 检测到一个镜像已经有变动时,它会使用新镜像自动重新启动相应的容器。我想在我的本地开发环境中尝试最新的构建镜像,所以使用了它。


Watchtower 本身被打包为 Docker 镜像,因此可以像运行任何其他容器一样运行它。要运行 Watchtower,你需要执行以下命令:


$ docker run -d --name watchtower --rm -v /var/run/docker.sock:/var/run/docker.sock  v2tec/watchtower --interval 30
复制代码


在上面的命令中,我们使用一个挂载文件 /var/run/docker.sock 启动了 Watchtower 容器。这么做是有必要的,为的是使 Watchtower 可以与 Docker 守护 API 进行交互。我们将 30 秒传递给间隔选项 interval。此选项定义了 Watchtower 的轮询间隔。Watchtower 支持更多的选项,你可以根据文档中的描述来使用它们。


我们现在启动一个 Watchtower 可以监视的容器。


$ docker run -p 4000:80 --name friendlyhello shekhargulati/friendlyhello:latest
复制代码


现在,Watchtower 将开始温和地监控这个 friendlyhello 容器。当我将新镜像推送到 Docker Hub 时,Watchtower 在接下来的运行中将检测到一个新的可用的镜像。它将优雅地停止那个容器并使用这个新镜像启动容器。它将传递我们之前传递给这条 run 命令的选项。换句话说,该容器将仍然使用 4000:80 发布端口来启动。


默认情况下,Watchtower 将轮询 Docker Hub 注册表以查找更新的镜像。通过传递环境变量 REPO_USER 和 REPO_PASS 中的注册表凭据,可以将 Watchtower 配置为轮询私有注册表。


要了解更多 Watchtower 的相关信息,建议你阅读 Watchtower 文档

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

Docker-gc 工具通过删除不需要的容器和镜像来帮你清理 Docker 主机。它会删除存在超过一个小时的所有容器。此外,它还删除不属于任何留置容器的镜像。


你可以将 docker-gc 作为脚本和容器来使用。我们将以容器的形式运行 docker-gc。若要使用 docker-gc 来查找所有可以删除的容器和镜像,命令如下:


$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e DRY RUN=1 spotify/docker-gc
复制代码


上述命令中,我们加载了 docker.sock 文件,以便 docker-gc 能够与 Docker API 交互。我们传递了一个环境变量 DRY_RUN=1 来查找将被删除的容器和镜像。如果不提供该参数,docker-gc 会删除所有容器和镜像。最好事先确认 docker-gc 要删除的内容。上述命令的输出如下所示:


[2017-04-28T06:27:24] [INFO] : The following container would have been removed 0c1b3b0972bb792bee508 60c35a4 bc08ba32b527d53eab173d12a15c28deb931/vibrant_ yonath[2017-04-28T06:27:24] [INFO] : The following container would have been removed 2a72d41e4b25e2782f7844e188643e395650a9ecca660e7a0dc2b7989e5acc28 /friendlyhello_ web[2017-04-28T06:27:24] [INFO] : The following image would have been removed sha256:00f017a8c2a6e1 fe2f fd05c281 f27d069d2a99323a8cd514dd35f228ba26d2ff[busybox: latest][2017-04-28T06:27:24] [ INFO] : The following image would have been removed sha256 :4a323b466a5ac4ce6524 8dd970b538922c54e535700cafe9448b52a3094483ea[hello-world:latest][2017-04-28T06:27:24] [INFO] : The following image would have been removed sha256:4a323b4 66a5ac4ce65248dd970b538922c54e535700cafe9448b52a3094483ea[python:2.7-slim]
复制代码


如果你认同 docker-gc 清理方案, 可以不使用 DRY_RUN 再次运行 docker-gc 执行清空操作。


$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock spotify/docker-gc
复制代码


上述命令的输出将告诉你 docker-gc 删除的所有镜像和容器。


docker-gc 还支持一些其他的选项。建议你阅读 docker-gc 文档以了解更多相关信息:

docker-slim:面向容器的神奇减肥药

如果你担心你的 Docker 镜像的大小,docker-slim 可以帮你排忧解难。


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


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



你可以看到,对于一个简单的应用程序,我们必须下载 194 MB 的数据。让我们用 docker-slim 来看看它能减掉多少脂肪。


$ docker-slim build --http-probe friendlyhello
复制代码


docker-slim 工具对胖镜像进行一系列的检查、测量,最终创建一个瘦版本的镜像。让我们看看这个减过肥的大小吧。



正如你所看到的,镜像大小被减少到 24.9 MB。你可以启动这个容器,它将以同样的方式运行。docker-slim 工具支持 Java、Python、Ruby 和 Node.js 应用。


你自己试试,看看能减下来多少。在我的个人项目中,我发现它在大多数情况下都适用。你可以从其文档中了解更多关于 docker-slim 的信息.

rocker:突破 Dockerfile 的限制

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


Rocker 为 Dockerfile 指令集增加了新的指令。Grammarly 为了解决他们遇到的 Dockerfile 格式的问题,创建了 Rocker。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 命令:


$ brew tap grammarly/tap$ brew install grammarly/tap/rocker
复制代码


一旦完成安装,你就可以通过传递 Rockerfile 使用 Rocker 来构建镜像了:


FROM python:2.7-slimWORKDIR /appADD . /appRUN pip install -r requirements. txtEXPOSE 80ENV NAME WorldCMD ["python","app.Py"]TAG shekhargulati/ friendlyhello:{{ .VERSION }}PUSH shekhargulati/friendlyhello:{{ .VERSION }}
复制代码


若要构建一个镜像并将其推送到 Docker Hub,你可以运行以下命令:


$ rocker d build --push -var VERSION-1.0
复制代码


Rocker 有一组很好的特性。要了解更多信息,请参考它的文档

ctop:容器的类顶层接口

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


$ brew install ctop
复制代码


一旦完成安装,就可以开始使用 ctop 了。现在,你只需要配置 DOCKER_HOST 环境变量。


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



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


ctop 是一个简单的工具,对于了解在你的主机上运行的容器很有帮助。你可以在 ctop 文档中了解更多相关信息。




以上是我发现的很有用的 5 款 Docker 工具。你在日常工作中使用 Docker 工具吗?希望这些工具能够为你带来帮助,也欢迎在评论中推荐你觉得有用的工具。

英文原文

5 Docker Utilities You Should Know


2019-12-16 14:2510557
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 392.0 次阅读, 收获喜欢 1983 次。

关注

评论

发布
暂无评论
发现更多内容

Network Performance Comparison for Industrial Automation Systems: IPQ9574 vs. IPQ6018

wallyslilly

万界星空科技MES中的仓库管理功能

万界星空科技

mes 云mes 万界星空科技 出入库管理 仓库管理

Project Office for mac(任务项目管理软件) 11.0激活版

Mac相关知识分享

Cisdem PDFMaster for mac(专业PDF编辑转换器)v6.5.0激活版

Mac相关知识分享

祝贺!亚马逊云科技与伊克罗德信息签署为期4年市场拓展战略合作计划

伊克罗德信息科技

柳州等保测评机构有哪些?在哪里?

行云管家

等保 等保测评 柳州

如何确保 API 接口的稳定性和可靠性

Noah

写在万粉千文的黎明前

FunTester

Transmit 5 for Mac(FTP客户端) 5.10.4中文版

Mac相关知识分享

轻松搞定工作汇报ppt!这3款AI软件值得拥有

彭宏豪95

效率工具 职场 办公软件 AIGC AI生成PPT

【YashanDB知识库】ycm托管数据库时报错OM host ip:127.0.0.1 is not support join to YCM

YashanDB

yashandb 崖山数据库 崖山DB

(成功率稳定)京东商品详情API快速上手:初学者的实用指南

代码忍者

API API 文档 API 测试

云MES:数字化转型的引擎,企业上云的强力推手

万界星空科技

企业上云 mes 5G 企业上云 云mes 万界星空科技

第七在线联手深服协:以科技之力,绘就时尚 AI 智能商品管理新篇章

第七在线

【行云流水线】满足你对工作流编排的一切幻想~skr

京东科技开发者

堡垒机应用发布功能是什么意思?有什么用?

行云管家

堡垒机 应用发布 堡垒机软件

用 AI 解锁技术调研的新姿势

京东科技开发者

​ 精选一款/开源MES生产制造执行系统

万界星空科技

mes #开源 开源mes 万界星空科技 mes源码

360联合国内15个最强大模型推出“AI助手”碾压GPT4o!全球首部《人工智能法案》正式生效!|AI日报

可信AI进展

人工智能

免费领取云主机,在华为开发者空间玩转YOLOV3

华为云开发者联盟

人工智能 云主机 目标检测 YoloV3 企业号 8 月 PK 榜

JetBrains IntelliJ IDEA 2020 中文无限试用版 Mac版 IDEA 2020下载安装

Rose

JetBrains GoLand v2023.3.2中文密钥版 及详细安装教程

Rose

Principle for Mac(交互式UI原型设计神器) v6.33中/英文版

Mac相关知识分享

高并发系统的艺术:如何在流量洪峰中游刃有余

京东科技开发者

JeecgBoot 如何集成 Spring AI

JEECG低代码

Swish for Mac(MacBook触控板窗口管理) v1.10.3免激活版

Mac相关知识分享

基于人工智能的代码分析与 Bug 检测实战

测试人

软件测试

文献解读-遗传病-第二十六期|《癫痫的临床特征、诊疗和KCNH5突变》

INSVAST

基因测序 基因数据分析 遗传病 文献解读

系统整容纪:用知识来"武装"自己~认识MySQL的锁与事务

京东科技开发者

记一次JSF异步调用引起的接口可用率降低

京东科技开发者

高并发系统的艺术:如何在流量洪峰中游刃有余

京东科技开发者

推荐5款好用的开源Docker工具_开源_Shekhar Gulati_InfoQ精选文章