7

我们可以使用没有源图像(OS)的docker文件创建一个docker镜像吗?

FROM rhel

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

当我在没有 FROM centosor的情况下构建 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
4

1 回答 1

17

你说“我们想要分离基础镜像(centos 或 rhel)和应用程序镜像并在运行时链接它们。 ”这基本上就是FROM rhel这样做的,这要归功于 Docker 使用的分层文件系统。

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

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

对于那些发现此问题正在寻找构建自己的基础映像的方法(因此您不必使用任何东西作为基础)的人,您可以使用FROM scratch并且应该阅读有关创建基础映像的信息。

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

于 2015-01-23T01:59:11.167 回答