社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

5 个开源 Docker 工具分享

运维 • 3 年前 • 357 次点击  

本文经授权转自公众号CSDN(ID:CSDNnews)

作者 | Shekhar Gulati

翻译 | Vincent

Docker社区已经创建了许多开源的工具,更多的用例使得它比您想像的更有用。你可以在这里查阅它们。

你在网上能找到很多酷炫的Docker工具。绝大多数是开源的。

过去两年,我已经积极地将Docker用到我的对大多数开发项目中。在你开始使用Docker的时候,你会发现,在很多用例里它比你预想的更加适用。 

你会希望Docker为你做得更多,而且它不会让你失望!

Docker社区非常活跃,每天都有很多有用的工具。在这个社区你很难知道哪些发生了革新。为了帮助你,我已经收集了我日常工作中用到的很有趣很实用的Docker工具。这些让我工作更加高效,消除了很多的手动工作。


让我们来看看我在使用Dockerize工具的过程中发现的每个工具。


1、watchtower:自动更新Docker容器


Watchtower监视运行中的容器,以便于对容器最初的镜像进行更改。当Watchtower检测到镜像发生改变时,会自动使用新的镜像重启容器。

 
我在本地开发中想要创建新的镜像就会使用它。


Watchtower本身会打包成Docker映像,所以您可以运行它,就像运行任何其他容器一样。当你要运行Watchtower,您将会用到下面的指令:



在上面的命令中,我们启动了一个带有挂载文件/var/run/docker.sock . 的Watchtower容器。这个步骤是必须的,通过设置30秒的时间间隔选项,为了能够让Watchtower可以和Docker守护进程API进行交互。这个时间定义了Watchtower
的轮询时间。Watchtower里面有很多的这样的选项设置,你可以按照文档所述使用它们。


现在我们就开始让Watchtower去监视一个容器:



Watchtower将要开始监视friendlyhello这个容器。当我将新的镜像推送到Docker Hub时,Watchtower将在下一次运行时检测到有新的镜像可用,它将停止容器,并使用新的镜像启动容器,它会传递给我们运行命令行时的选项设置。换句话说,容器将以4000:80端口启动。


默认情况下,Watchtower将轮询Docker Hub注册表以查找更新的镜像。您可以通过将注册表凭据传递给环境变量REPO_USER和REPO_PASS来配置Watchtower,让它去轮询私有注册表。要了解更多关于Watchtower的信息,我建议您去查看Watchtower文档(https://github.com/v2tec/watchtower/blob/master/README.md)。


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


docker-gc实用程序会帮助你清理Docker主机,去除那些没用的容器和镜像文件。它会删除一个多小时前存在的所有容器。此外,它还会删除不属于任何剩余容器的 
镜像。


您可以将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文档(https://github.com/spotify/docker-gc/blob/master/README.md)以了解更多信息。


3、docker-slim:容器的魔法丸


如果担心Docker镜像的大小,docker-slim将会解决您的担忧。


docker-slim实用程序使用静态和动态分析来将大的镜像转变为缩略的镜像。要使用docker-slim,您必须从Github下载其二进制文件。二进制文件可用于Linux和Mac。下载二进制文件后,将其添加到PATH中。


我创建了一个Docker图像,例如:使用在Docker官方文档(https://docs.docker.com/get-started/)中的应用程序friendlyhello。正如你下面所看到的镜像的大小是194MB。



您可以看到一个简单的应用程序,我们必须下载194 MB的数据。让我们用docker-slim来看看它可以去除多少多余的东西。 



docker-slim实用程序将执行一系列步骤 -检查、分析较大的镜像,最终创建一个缩略版本的镜像。我们来看下这个缩略版的大小。 



正如你上面看到的,这个镜像的大小被所缩减到24.9MB。您可以启动容器,并以相同的方式运行。docker-slim实用程序适用于Java,Python,Ruby和Node.js应用程序。


尝试一下,看看你有没有收获。在我的个人项目中,我发现它在大多数情况下都有效。 


您可以从其文档(https://github.com/docker-slim/docker-slim/blob/master/README.md)中了解更多关于docker-slim的信息。


4、rocker:打破Dockerfile的限制


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


Rocker向Dockerfile指令集添加了新的指令。Rocker是由Grammarly创建的,用于解决Dockerfile格式所面临的问题。Grammarly团队写了一篇深入博客,解释了创建它的原因。我建议你阅读它,以更好地了解Rocker。


他们在帖子中强调的两个问题是:


  • Docker镜像的大小。

  • 构建速度缓慢。


博客还提到了Rocker添加的一些新指令。请参阅Rocker文档(https://github.com/grammarly/rocker/blob/master/README.md),了解Rocker支持的所有说明。


  • MOUNT用于在构建之间共享卷,以便它们可以重用依赖关系管理工具。

  • 在Dockerfile中也存在FROM指令。Rocker可以添加多个FROM指令。这意味着您可以从单个Rockerfile创建多个镜像,第一组指令将使用所有依赖关系构建工件。第二组指令可以使用构建工件,这大大降低了镜像的大小。

  • TAG用于构建不同阶段标记镜像,这意味着您不必手动标记镜像。

  • PUSH用于将镜像推送到注册表。

  • ATTACH允许您以交互方式运行中间步骤,这对调试非常有用。


要使用Rocker,您必须将它安装在你的机器上。对于Mac用户来说,就像运行几个brew命令一样简单:



一旦安装,您可以使用Rocker通过将其传递给Rockerfile来构建镜像:



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



Rocker有一套很好的功能。要了解更多信息,请参阅其文档(https://github.com/grammarly/rocker/blob/master/README.md)。


5、ctop:容器顶部接口


最近我开始使用的实用程序是ctop,它提供了多个容器的实时度量视图。如果你是一个mac用户,那么你可以使用brew安装ctop,如下所示。 



一旦安装,您可以开始使用ctop。它只需要配置DOCKER_HOST环境变量。要查看所有容器的状态,可以运行ctop命令。 



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


ctop是一个简单的实用程序,非常有用,可以了解在主机上运行的容器。您可以在ctop文档(https://github.com/bcicen/ctop/blob/master/README.md)中阅读更多信息。


文中涉及工具官网等链接请点击「阅读原文」查看。

本文转自公众号“CSDN”,ID:CSDNnews

●输入m获取文章目录

推荐↓↓↓

Linux学习

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74182
 
357 次点击