创建没有源映像(OS)的docker镜像

时间:2015-01-22 23:30:12

标签: docker dockerfile

我们可以使用带有源图像(OS)的docker文件创建一个docker镜像,即

FROM rhel

我们不希望所有应用程序泊坞窗图像中都有基本图像(centos或rhel)。我们想要分离基本图像(centos或rhel)和应用程序图像,并在运行时链接它们。有可能吗?

当我在没有 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

1 个答案:

答案 0 :(得分:6)

你说" 我们希望将基本图像(centos或rhel)和应用程序图像分开并在运行时链接它们。"这基本上是FROM rhel所做的,这要归功于Docker使用的分层文件系统。

也就是说,FROM图片不会成为图片的一部分 - 它仍保留在单独的图层中。您的新图片指向rhel(或其他FROM基础图层),然后在运行时将其添加到其上。

所以继续使用FROM - 您将获得所需的行为。

对于那些发现这个问题寻找构建自己的基本图像的方法的人(所以你不必使用任何东西作为基础),你可以使用FROM scratch,你应该阅读{ {3}}

而且,为了完全迂腐,Docker需要FROM和包含Linux发行版的根文件系统的基础的原因是没有根文件系统,什么都没有。您甚至不能RUN mkdir /opt/cassandra,因为mkdir是根文件系统提供的程序。