创build没有源图像的docker图像(OS)

我们可以使用Docker文件创build一个Docker镜像,即使用源图像(OS)也可以

FROM rhel 

我们不希望在我们的所有应用程序泊坞窗图像中使用基础图像(centos或rhel)。 我们希望将基本映像(centos或rhel)和应用程序映像分开,并在运行时将它们链接起来。 可能吗?

当我正在build立docker镜像而没有使用 FROM centosrhel ,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是根文件系统提供的程序。