创建 docker 个没有源图像的图像 (OS)
Create docker image without source image (OS)
我们可以使用 docker 文件创建一个 docker 图像而不使用源图像 (OS) 即
FROM rhel
我们不希望在我们所有的应用程序 docker 图像中使用基础图像(centos 或 rhel)。我们想在 运行 时间内将基础映像(centos 或 rhel)和应用程序映像分开并 link 它们。可能吗?
当我构建 docker 图像时 没有 FROM centos
或 rhel
,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
是根文件系统提供的程序。
我们可以使用 docker 文件创建一个 docker 图像而不使用源图像 (OS) 即
FROM rhel
我们不希望在我们所有的应用程序 docker 图像中使用基础图像(centos 或 rhel)。我们想在 运行 时间内将基础映像(centos 或 rhel)和应用程序映像分开并 link 它们。可能吗?
当我构建 docker 图像时 没有 FROM centos
或 rhel
,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
是根文件系统提供的程序。