Dockerfile,Docker镜像和可重现的环境

关于docker的常用文档和注释提到了控制和共享Dockerfile的版本,这应该让任何人都可以构建相同的图像.这听起来很棒,但是,我们通常都有这样的命令.

RUN apt-get update
pip install..

可以根据运行时间安装不同的东西/版本/补丁,使调试变得困难.

另一方面,共享docker图像并不能为您带来版本控制等好处,也无法看到两个图像之间的完全不同.

>其中哪些(dockerfile vs image)应该是用于开发和部署的参考?
> Dockerfile是否应该提供有关确切更新的更多详细信息?即使这样,基本图像可能会根据您运行它的时间而有所不同.

最佳答案
我想我更喜欢共享Dockerfile.显然,您需要在Dockerfile中的FROM语句中指定一个版本.例如,因为不同的Ubuntu版本将具有不同的可用包.

对于系统或-dev依赖项,您可能希望实际让版本自由浮动以始终安装最新版本.

Debian / Ubuntu包

对于使用apt-get安装的任何程序,例如curl,您可以获取版本号

apt-cache policy curl | grep -oP 'Installed: \K\S+'

然后编辑您的Dockerfile以读取类似的内容

RUN apt-get install curl=7.47.0-1ubuntu2.2

Python

使用pip可以轻松处理Python版本.提取已安装打包的所有版本号,并将它们存储在需求文件中,如下所示:

pip freeze > requirements.txt

然后在Dockerfile中运行

RUN pip install -r requirements.txt

转载注明原文:Dockerfile,Docker镜像和可重现的环境 - 代码日志