Docker 最佳实践

jopen 10年前

本文是Docker使用过程中的一些最佳实践。虽然很多都是老话重谈,但是很多人在使用过程中还是没有遵守,比如每个进程只使用一个容器这个最佳实践,有很多人都来问,如果不这样行不行,当然行,但是如果你想长久的用Docker,那还是请遵守最佳实践吧。

精益、简单,易于管理,这是Docker的精髓。最佳实践可以确保你利用到Docker的所有优势,使得这个强大工具能够发挥最大的效果。本文的Docker最佳实践可以帮助你学习使用已经在开发者中十分流行的Docker容器化技术。

Docker 最佳实践

使用可信任的Build

可信任Build让一切变得简单。可信任的Build这个特性有助于简化和共享repository。关键之处是在push任何build之前在本地完成所有开发和测试。如果你在本地构建和测试容器,当其被push到别的地方时也会用同样的方式工作。

最少化Layer

太多的层次使得事情无端复杂,避免不必要的层次。要点是在可读性和最少可能的层次间找到最优平衡。只在真正需要增加层次的时候增加额外的层次。

每个进程只使用一个容器

将应用解耦合到不同的容器中,每个进程一个容器。这使得系统更容易横向扩展,也使得容器可以再利用。处理相互依赖的服务时,使用容器的关联特性,而不是将它们直接放在同一个Docker容器里。

不要安装不需要的Package

避免安装不需要的package。这会帮助减少文件大小,减少依赖的复杂性,并且降低构造时间。比如,在数据库镜像里就没有必要安装文本编辑器,这完全是在浪费资源。任何时候尽可能地减少冗余。

使用DockerIgnore

DockerIngore可以很好得从构建上下文以及最终镜像里排除不必要的文件和目录。这个特性使得容器可以更快更有效地加载,节省很多浪费的启动时间。

构建容易被替换的容器

容器是临时的。也就是说,我们在设计容器就应该考虑到,仅用很少的步骤和配置就可以将其停止、删除和替换。构建Docker容器时就要考虑到之后这个容器如何能被轻易丢弃替换。

注意使用标签

Docker Build会生成一个易读的标签,帮助人们更轻松地管理镜像。使用-t选项就可以使用Docker Build特性。追本溯源,Docker容器化最佳实践是关于如何让容器更简单更纯净。避免任何会导致程序膨胀的不必要操作。时刻考虑到精简,那么Docker就会回报给你灵活性,更少的启动时间以及更好的易用性。

原文:http://blog.bigstep.com/big-data-performance/docker-best-practices/
译文: http://dockerone.com/article/161 译者: 崔婧雯