Github上这5款非常好用的开源 Docker 工具,京东、华为都在用( 二 )

如果你认同 docker-gc 清理方案 ,  可以不使用 DRY_RUN 再次运行 docker-gc 执行清空操作 。
$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock spotify/docker-gcdocker-gc 还支持一些其他的选项 。建议你阅读 docker-gc 文档以了解更多相关信息:
(docker-gc文档与GitHub地址看文末)
3、docker-slim:面向容器的神奇减肥药如果你担心你的 Docker 镜像的大小 , docker-slim 可以帮你排忧解难 。
docker-slim 工具使用静态和动态分析方法来为你臃肿的镜像瘦身 。要使用 docker-slim , 可以从 Github 下载 linux 或者 mac 的二进制安装包 。成功下载之后 , 将它加入到你的系统变量 PATH 中 。
为举例需要 , 我参考 Docker 官方文档创建了一个名为 friendlyhello 的 Docker 镜像 , 该镜像大小为 194MB(如下所示):

Github上这5款非常好用的开源 Docker 工具,京东、华为都在用

文章插图
 
你可以看到 , 对于一个简单的应用程序 , 我们必须下载 194 MB 的数据 。让我们用 docker-slim 来看看它能减掉多少脂肪 。
$ docker-slim build --http-probe friendlyhellodocker-slim 工具对胖镜像进行一系列的检查、测量 , 最终创建一个瘦版本的镜像 。让我们看看这个减过肥的大小吧 。
Github上这5款非常好用的开源 Docker 工具,京东、华为都在用

文章插图
 
正如你所看到的 , 镜像大小被减少到 24.9 MB 。你可以启动这个容器 , 它将以同样的方式运行 。docker-slim 工具支持 JAVA、Python、Ruby 和 Node.js 应用 。
你自己试试 , 看看能减下来多少 。在我的个人项目中 , 我发现它在大多数情况下都适用 。你可以从其文档中了解更多关于 docker-slim 的信息:
(docker-slim文档与GitHub地址看文末)
4、rocker:突破 Dockerfile 的限制大多数使用 Docker 的开发人员都使用 Dockerfile 来构建镜像 。Dockerfile 是一种声明式的方法 , 用于定义用户可以在命令行上调用的所有命令 , 从而组装镜像 。
Rocker(https://github.com/grammarly/rocker)为 Dockerfile 指令集增加了新的指令 。Grammarly 为了解决他们遇到的 Dockerfile 格式的问题 , 创建了 Rocker 。Grammarly 团队写了一篇深入的博客 , 解释他们创建它的原因 。我建议你读一读 , 以更好地了解 Rocker 。他们在博文中强调了两个问题:
Docker 镜像的大小 。
缓慢的构建速度 。
该博客还提到了 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 文档与GitHub地址看文末)
5、ctop:容器的类顶层接口ctop 是我最近开始使用的一个工具 , 它能够提供多个容器的实时指标视图 。如果你是一个 Mac 用户 , 可以使用 brew 安装 , 如下所示:
$ brew install ctop一旦完成安装 , 就可以开始使用 ctop 了 。现在 , 你只需要配置 DOCKER_HOST 环境变量 。你可以运行 ctop 命令 , 查看所有容器的状态 。


推荐阅读