Docker最佳实践:使用操作系统或应用程序作为基础映像



我想构建一个包含Apache和Python3的docker映像。在这种情况下,建议使用的基本图像是什么?有一个官方的apache:2.4.43-alpine映像我可以用作基础映像,或者我可以在alpine基础映像上安装apache。

在这种情况下,最好的方法是什么?

选项1:

FROM apache:2.4.43-alpine
<Install python3>

选项2:

FROM alpine:3.9.6
<Install Apache>
<Install Python3>

以下是我的规则。

规则1:如果图像是官方图像(如nodepythonapache等(,则可以直接将它们用作应用程序的基本图像,而不是自己构建。

规则2:如果图像是由所有者构建的,例如hashicorp/terraform,hashicorp是terraform的所有者,那么最好使用它,而不是构建自己的图像。

规则3:如果您只想节省时间,请选择下载量最大、安装了类似应用程序的图像作为基本图像

确保您可以查看其Dockerfile。否则,无论下载量有多少,都不要使用它。

规则4:永远不要从公共注册表服务器中提取映像,如果您的公司存在安全合规问题,请构建自己的映像。

建立自己的另一个原因是,现有的映像不是建立在您喜欢的操作系统上的。比如aws证明的一些图像,它们是用amazon linux 2构建的,在大多数情况下,我会用自己的重建。

规则5:在构建自己的图像时,不要介意从哪个基础图像开始,如果可以的话,无需重新发明轮子,并使用exis图像的Dockerfilegithub.com

  1. 避免Alpine,这通常会使Python库安装速度慢很多(https://pythonspeed.com/articles/alpine-docker-python/)

  2. 一般来说,Python版本比Apache版本更重要。来自稳定Linux发行版的最新Apache即使不是最新版本也很好,但最新的Python可能太旧了。比如,当3.9出来的时候,你想上3.7吗?

因此,我建议使用python:3.8-slim-buster(或您想要的任何Python版本(,并使用apt-get安装Apache。

相关内容

最新更新