你应该知道的 5 个 Docker 工具
你可以在网上找到大量炫酷的Docker 工具,并且大部分是开源的,可以通过Github访问。在过去的两年里,我开始在开发项目中大量使用Docker。当你开始使用Docker,你会发现它比你想象的还要适合于更多的使用场景。你也许希望Docker能够做的更多,当然你不会失望。
Docker社区非常活跃,每天都会推出大量有用的工具。要想持续追踪社区中发生的各项创新其实非常困难。为了帮助你,我收集了一些每天在日常工作中使用、令人感兴趣并且十分有用的Docker工具。这些工具消除了大量手工工作,让我更有生产力。 
让我们来看看这些在我的容器化之旅中非常有用的工具吧。
- 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文档学到更多。
- 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有很多功能,要知道更多请参考文档。
- ctop: 容器的类Top界面
 
ctop是我最近使用的一个工具,它能够提供多个容器的实时指标视图。如果您是一个Mac用户,可以使用brew安装: 
一旦完成安装,你可以启动ctop。它只需要配置DOCKER_HOST环境变量。 
要查看所有容器的状态,可以直接运行 ctop 命令。 
仅查看当前正在运行的容器的状态,可以使用 ctop -a 命令。
ctop是一个简单并且非常有用的工具,能够帮助您了解主机上运行的容器。可以阅读 ctop文档了解更多ctop的知识。
http://geek.csdn.net/news/detail/227903
你应该知道的 5 个 Docker 工具的更多相关文章
- 很少人知道的office专用卸载工具
		
Microsoft Office是微软公司开发的一套基于 Windows 操作系统的办公软件套装.常用组件有 Word.Excel.Powerpoint等.当我们不需要再用了或者想安装旧版本的话,首先 ...
 - 2018年你需要知道的13个JavaScript工具库
		
译者按: 你可能已经用到Underscore或者Lodash.本文列举了13个常用的JavaScript工具库来提高开发效率. 原文: 11 Javascript Utility Libraries ...
 - 每个Java开发人员都应该知道的10个基本工具
		
大家好,我们已经在2019年的第9个月,我相信你们所有人已经在2019年学到了什么,以及如何实现这些目标.我一直在写一系列文章,为你提供一些关于你可以学习和改进的想法,以便在2019年成为一个更好的. ...
 - 超实用!K8s 开发者必须知道的 6 个开源工具
		
文章来源:云原生实验室,点击查看原文. 导读:Kubernetes 作为云原生时代的"操作系统",熟悉和使用它是每名用户(User)的必备技能.如果你正在 Kubernetes 上 ...
 - Windows Container 和 Docker:你需要知道的5件事
		
微软在2016年的Ignite技术大会上正式发布了Windows Server 2016,其中的容器服务已经可以作为生产环境使用.这意味着Windows 内置的容器服务正式进入了大家的视野,虽然之前我 ...
 - 你不得不知道的5个神奇的Docker工具
		
Docker社区非常活跃,每天都会推出大量有用的工具.要想持续追踪社区中发生的各项创新其实非常困难.为了帮助你,我收集了一些每天在日常工作中使用.令人感兴趣并且十分有用的Docker工具.这些工具消除 ...
 - PHP开发者该知道的5个Composer小技巧
		
Composer 是新一代的PHP依赖管理工具.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单 co ...
 - 程序员必须要知道的Hadoop的一些事实
		
程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...
 - 理工科应该的知道的C/C++数学计算库(转)
		
理工科应该的知道的C/C++数学计算库(转) 作为理工科学生,想必有限元分析.数值计算.三维建模.信号处理.性能分析.仿真分析...这些或多或少与我们常用的软件息息相关,假如有一天你只需要这些大型软件 ...
 
随机推荐
- mahout系列之---谱聚类
			
1.构造亲和矩阵W 2.构造度矩阵D 3.拉普拉斯矩阵L 4.计算L矩阵的第二小特征值(谱)对应的特征向量Fiedler 向量 5.以Fiedler向量作为kmean聚类的初始中心,用kmeans聚类 ...
 - 属性动画基础之ValueAnimator
			
概述 属性动画是谷歌在android3.0(API level 11)时候给我们带来了属性动画,真正意义上带来了"动画",以前的帧动画也就4中效果的组合(旋转.淡入淡出.放大缩小. ...
 - 恶补web之七:html DOM知识
			
html DOM定义了访问和操作html文档的标准;dom是w3c的标准,dom定义了访问html和xml文档的标准: w3c文档对象模型(dom)是中立平台和语言的接口,它允许程序和脚本动态访问和更 ...
 - ruby中如何调用与局部变量同名的私有方法
			
如果ruby中一个局部变量名和私有方法名同名的话,默认该名称被解释为变量而不是方法: x=10; def x;puts "what?" end 当你输入x实际不能执行x方法.解释器 ...
 - 八、Join 连接查询
			
文档目录 开发中...
 - Loader转换器
			
一.简介 webpack本身只能处理js模块,Loader可以理解为模块和资源的转换器,它本身是一个函数,接受文件作为参数,返回转换的结果.因此,我们就能通过require来加载任何类型的模块和文件. ...
 - Qt与FFmpeg联合开发指南(三)——编码(1):代码流程演示
			
前两讲演示了基本的解码流程和简单功能封装,今天我们开始学习编码.编码就是封装音视频流的过程,在整个编码教程中,我会首先在一个函数中演示完成的编码流程,再解释其中存在的问题.下一讲我们会将编码功能进行封 ...
 - 使用lombok的@Data @NoArgsConstructor @AllArgsConstructor @EqualsAndHashCode注解,编译时报错 找不到符号
			
使用lombok添加@AllArgsConstructor后报错"错误:找不到符号 符号: 问题:未启用lombok注解 解决: settings->build->compile ...
 - mysql cluster部署
			
一.mysql cluster的基本概念 1.mysql cluster的组成 管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据.启 ...
 - Angular HttpClient upload file with FormData
			
从sof上找到一个example:https://stackoverflow.com/questions/46206643/asp-net-core-2-0-and-angular-4-3-file- ...