创build没有源图像的docker图像(OS)
我们可以使用Docker文件创build一个Docker镜像,即使用源图像(OS)也可以
FROM rhel
我们不希望在我们的所有应用程序泊坞窗图像中使用基础图像(centos或rhel)。 我们希望将基本映像(centos或rhel)和应用程序映像分开,并在运行时将它们链接起来。 可能吗?
当我正在build立docker镜像而没有使用 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
你说过:“ 我们要分离基本映像(centos或rhel)和应用程序映像,并在运行时将它们链接起来。 ”这基本上是FROM rhel
所做的,这要感谢Docker使用的分层文件系统。
也就是说, FROM
图像不会成为您的图像的一部分 – 它仍然在一个单独的图层。 您的新映像指向rhel
(或其他FROM
基本层),然后在运行时将其自身添加到顶层。
所以,继续使用FROM
– 你会得到你想要的行为。
对于那些发现这个问题寻找一种方法来build立自己的基本形象(所以你不必使用任何东西作为基础),你可以使用FROM scratch
,你应该阅读有关创build一个基本的形象 。
而且,为了完全迂腐,Docker需要一个FROM
和包含一个Linux发行版根文件系统的基础的原因是没有根文件系统,什么都没有。 你甚至不能RUN mkdir /opt/cassandra
因为mkdir
是根文件系统提供的程序。