我们可以使用带有源图像(OS)的docker文件创建一个docker镜像,即
FROM rhel
我们不希望所有应用程序泊坞窗图像中都有基本图像(centos或rhel)。我们想要分离基本图像(centos或rhel)和应用程序图像,并在运行时链接它们。有可能吗?
当我在没有 FROM centos
或rhel
的情况下构建泊坞窗图片时,docker会抱怨:“在提交前提供源图片”
我的docker文件如下所示:
MAINTAINER abc
RUN mkdir /opt/cassandra
RUN cd /opt/cassandra
RUN wget http://www.interior-dsgn.com/apache/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz
RUN tar xvzf apache-cassandra-2.1.2-bin.tar.gz
RUN cd apache-cassandra-2.1.2-bin
答案 0 :(得分:6)
你说" 我们希望将基本图像(centos或rhel)和应用程序图像分开并在运行时链接它们。"这基本上是FROM rhel
所做的,这要归功于Docker使用的分层文件系统。
也就是说,FROM
图片不会成为图片的一部分 - 它仍保留在单独的图层中。您的新图片指向rhel
(或其他FROM
基础图层),然后在运行时将其添加到其上。
所以继续使用FROM
- 您将获得所需的行为。
对于那些发现这个问题寻找构建自己的基本图像的方法的人(所以你不必使用任何东西作为基础),你可以使用FROM scratch
,你应该阅读{ {3}}
而且,为了完全迂腐,Docker需要FROM
和包含Linux发行版的根文件系统的基础的原因是没有根文件系统,什么都没有。您甚至不能RUN mkdir /opt/cassandra
,因为mkdir
是根文件系统提供的程序。