创建 docker 个没有源图像的图像 (OS)

Create docker image without source image (OS)

我们可以使用 docker 文件创建一个 docker 图像而不使用源图像 (OS) 即

FROM rhel

我们不希望在我们所有的应用程序 docker 图像中使用基础图像(centos 或 rhel)。我们想在 运行 时间内将基础映像(centos 或 rhel)和应用程序映像分开并 link 它们。可能吗?

当我构建 docker 图像时 没有 FROM centosrhel,docker 抱怨:"provide source image before commit"

我的 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)和应用程序映像分开并 link 它们。”那是由于 Docker.

使用的分层文件系统,本质上是 FROM rhel 所做的

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

所以请继续使用 FROM -- 您会得到想要的行为。

对于那些发现这个问题并正在寻找构建自己的基础图像的方法(这样你就不必使用任何东西作为基础)的人,你可以使用 FROM scratch 并且你应该阅读 Creating a base image.

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