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

bvr*_*bvr 1 docker dockerfile

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

FROM rhel
Run Code Online (Sandbox Code Playgroud)

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

当我在没有 FROM centos或构建docker镜像时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
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 6

您说" 我们希望将基本映像(centos或rhel)与应用程序映像分开并在运行时链接它们. " FROM rhel由于Docker使用的分层文件系统,这基本上就是这样.

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

所以继续使用FROM- 你会得到你想要的行为.

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

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