1. 概述

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

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

让我们来看看这些在我的容器化之旅中非常有用的工具吧。

2. watchtower: 自动更新Docker容器

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

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

img

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

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

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

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

想要了解更多,推荐阅读 瞭望塔文档。

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

docker-gc工具能够帮助你清理Docker宿主机,删除不再需要的容器和镜像。它会移除存在超过1小时的所有容器。同时,它会删除不属于任何遗留容器的镜像。

你可以把docker-gc当做脚本或容器使用。这里,我们作为容器运行docker-gc。使用docker-gc查找所有可以删除的容器和镜像,命令如下:

img

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

img

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

img

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

docker-gc还支持其他一些选项,建议阅读 docker-gc文档以了解更多。

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

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

docker-slim工具使用静态和动态分析方法来为你臃肿的镜像瘦身。要使用docker-slim,可以从

Github

下载Linux或者Mac的二进制安装包. 一旦你成功下载,并加入到你的系统PATH变量中。

为了举例,我参考

Docker官方文档

创建了一个Docker镜像 friendlyhello , 镜像大小为194MB(如下所示):

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

img

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

img

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

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

5. 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安装命令非常简单:

img

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

img

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

img

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

6. ctop: 容器的类Top界面

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

一旦完成安装,你可以启动ctop。它只需要配置DOCKER_HOST环境变量。

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

img

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

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

这些都是我发现的非常有用的Docker工具。您是否也在日常工作中用到其他的Docker工具呢?如果是这样的话,请在下面的评论区留言以让我们知晓。

7. 参考资料

http://www.docker.org.cn/docker/133.html

你应该知道的 5 个 Docker 工具相关推荐

  1. java 开发人员工具_每个Java开发人员都应该知道的10个基本工具

    java 开发人员工具 大家好,我们已经到了2019年的第二个月,我相信你们所有人都已经制定了关于2019年学习以及如何实现这些目标的目标. 我一直在撰写一系列文章,为您提供一些知识,使您可以学习和改 ...

  2. 每个Java开发人员都应该知道的10个基本工具

    大家好,我们已经到了2019年的第二个月,我相信你们所有人都已经为2019年的学习目标以及如何实现这些目标制定了目标. 我一直在撰写一系列文章,为您提供一些知识,使您可以学习和改进以成为2019年更好 ...

  3. Java开发人员应该知道的7种新工具

    通过快速浏览一些最新的创新工具,随时准备锁定和加载. 万一您错过了它,RebelLabs最近发布了Java工具和技术前景的全球调查结果 . 除了著名的工具和成熟的工具外,市场还涌现出鲜有人知的新鲜工具 ...

  4. 程序员一定要知道的11个实用工具网站

    目录 1.搜索引擎 2.PPT 3.图片操作 4.文件共享 5.应届生招聘 6.程序员面试题库 7.办公.开发软件 8.高清图片.视频素材网站 9.项目开源 10.算法 11.在线工具宝典大全 程序员 ...

  5. 正在搜索开发人员模式安装包_每个 Java 开发人员都应该知道的 10 个基本工具...

    大家好,我们已经在 2019 年的第 9 个月,我相信你们所有人已经在 2019 年学到了什么,以及如何实现这些目标.我一直在写一系列文章,为你提供一些关于你可以学习和改进的想法,以便在 2019 年 ...

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

    文章来源:云原生实验室,点击查看原文. 导读:Kubernetes 作为云原生时代的"操作系统",熟悉和使用它是每名用户(User)的必备技能.如果你正在 Kubernetes 上 ...

  7. 每个Java开发者都应该知道的5个JDK工具

    摘要:有许许多多的JDK工具呈现在大家面前,但最常用的莫过于java.exe.javac.exe.jar等.除了这几个,还有哪些呢?大家不妨看看本文作者推荐的5个JDK工具. [编者按]JDK是Jav ...

  8. 开源java性能分析工具_Java性能监控:您应该知道的5个开源工具

    开源java性能分析工具 鲜为人知但有用:开源应用程序性能监视的状态 对于任何应用程序来说,最重要的事情之一就是性能. 我们要确保用户获得他们能获得的最佳体验,并想知道我们的应用已启动并正在运行. 这 ...

  9. java 开发人员工具_Java开发人员应该知道的7种新工具

    java 开发人员工具 通过快速浏览一些最新的,创新的工具,准备好锁定和加载. 万一您错过了它,RebelLabs最近发布了Java工具和技术前景的全球调查结果 . 除了著名的工具和成熟的工具之外,市 ...

最新文章

  1. 【TensorFlow2.0】(1) tensor数据类型,类型转换
  2. 脑机接口EEG信号分类算法
  3. mysql游标嵌入式_Oracle与MySQL内嵌游标的使用示例
  4. Mangos自己制作装备
  5. 枚举值转换(字符串转换为枚举和整数转换为枚举)
  6. 代码收藏——js+asp 的屏幕滚动脚本
  7. C++之函数的默认值参数说明
  8. TCP如何利用不可靠的IP协议实现可靠传输
  9. (王道408考研操作系统)第四章文件管理-第一节2:文件的逻辑结构
  10. R7-2 统计字符[2] (10 分)
  11. QQ聊天记录不会被盗取的绝招
  12. 6410的系统时钟设置(下)---几个常用函数的C源码
  13. 基于JAVA+Swing+MYSQL的宿舍管理系统
  14. 爬取豆瓣网电视剧数据(共1500条)
  15. esp32上传文件方法
  16. autocad2014 转pdf并保存多页
  17. MySQL的基本用法
  18. java翁恺MOOC每周编程题
  19. 2021.08.09【普及组】模拟赛C组比赛总结
  20. 机器学习实战 | Python 信用卡欺诈检测其实特简单

热门文章

  1. 揭秘@爱可可:“寂寞呆子”成长记
  2. CS本科毕业生能拿到45万年薪?
  3. 都在建议,不要直接使用 @Async 注解,为什么?
  4. Spring Boot 五种热部署方式,极速开发就是生产力!
  5. 100万人同时抢1万张火车票,极限并发带来的思考
  6. Google和Facebook为什么不用Docker?
  7. 分布式存储 Ceph 的演进经验 · SOSP 2019
  8. 分库分表之 Sharding-JDBC 中间件,看这篇真的够了!
  9. G1的Region是如何划分数量和大小的?
  10. 小说:白话幂等性设计