从两个基本映像(centos和python)构建一个新的docker映像

时间:2020-07-17 14:05:37

标签: python dockerfile

我想基于Centos8构建一个docker镜像。在此图像中,我想安装版本3.7.7的Python。这样的Python映像已经存在于dockerhub中。

如何使用两个基本映像来构建新的docker映像?

From python:3.7.7 
# which files and foldes do I have to copy to my new docker image?

From centos:8
LABEL maintainer myself@test.com

如果不可能,那是从头开始构建python版本的最佳方法Link-此解决方案的问题是docker映像很大。

1 个答案:

答案 0 :(得分:0)

TL; DR通常不能在一个图像上同时包含两个图像(原因说明如下)
TL; DR解决方案列表:

  1. 使用已经是CentOS且已安装Python的基本映像,也许是this映像。
  2. 从CentOS映像开始,使用Dockerfile中的程序包管理器安装Python。
  3. 从CentOS映像开始,在Dockerfile中构建Python。
  4. 只需在提供的发行版中使用Python。

长回答:
使用FROM imagename等同于下载一个预先构建的映像,然后在其上添加当前Dockerfile中的指令。 图像基本上是文件系统的快照。
其中之一是容器的快照,该容器可能已经安装了Linux发行版并安装了Python。
另一个是另一个Linux发行版的文件系统的快照,其中包含所有内容。 您只是不能混合它们,因为图像不仅是Python。 Python需要在运行的Linux内核旁边运行,将它们混合在一起几乎可以肯定会破坏它们。因为它们具有冲突的文件以及在适当位置运行它们的方式。
但是您可以更改一个快照以从中创建另一个快照,例如,可以获取CentOS映像并使用程序包管理器安装Python,然后可以从其获取快照并将其用作工作Docker容器。

相关问题