Docker 通过其简单的容器化模型改变了软件开发,让您可以快速将工作负载打包成可复制的单元。虽然 Docker 很容易掌握,但它的用法有更多的细微差别,而不是总是很明显。当您希望优化 Docker 使用以提高效率和性能时尤其如此。
以下是您应该寻找和避免的七种最常见的 Docker 反模式。尽管您的容器和图像可能会满足您的直接需求,但任何这些实践的存在都表明您正在以一种可能进一步有害的方式偏离容器化原则。
1. 在容器内应用更新
可以说,最常见的 Docker 反模式是尝试使用从传统虚拟机继承而来的技术来更新容器。容器文件系统是短暂的,因此当容器停止时所有更改都会丢失。它们的状态应该可以从Dockerfile用于构建图像的状态中重现。
这意味着您不应该apt upgrade在容器内运行。然后,它们将与构建它们的图像不同。容器旨在自由互换;将数据与代码和依赖项分开,让您可以随时替换容器实例。
应该通过定期重建镜像、停止现有容器并根据修改后的镜像启动新容器来应用补丁。社区工具链项目可用于简化此过程并让您了解可用的上游更新。
2. 在一个容器内运行多个服务
容器应该是独立的并专注于一项特定的功能。尽管您以前可能在一台物理机器上运行您的 Web