docker 从头开始​​运行数据容器

docker running a data container from scratch

我创建了一个纯数据容器,其中包含旨在由 nginx 容器使用的静态 HTML 文件。目标是我的 webapp 提供一个 nginx 可以使用的卷。

出于这个原因,我创建了一个简单的 Dockerfile:

FROM scratch
MAINTAINER me <me@me.com>
ADD dist/ /webappp/

当我从命令行运行创建的容器时run -d -v /webappp --name webapp myOrg/webapp echo yo

我收到错误 Error response from daemon: Cannot start container db7fd5cd40d76311f8776b1710b4fe6d66284fe75253a806e281cd8ae5169637: exec: "echo": executable file not found in $PATH 如果当然正确的话,因为图像根本没有可以执行的命令。没有命令就无法运行容器。

虽然命令行上的这个错误对我来说不是什么大问题,因为我知道数据容器仍然被创建并且现在可以被 nginx 访问,但如果我想用 Vagrant 自动化它就不行了.由于此错误,自动化流程总是失败。

到目前为止,我唯一的解决方案是从一个发行版扩展我的小方便图像,恕我直言,该发行版对于仅数据容器没有意义,以便仅调用 echo 或 true!

docker 中是否有 NOP exec 命令或 docker 是否需要始终执行某些操作,是否可以运行一个不执行任何操作或不产生错误的临时容器。

为什么要使用 scratch?

以nginx镜像为基础即可。您已经缓存了图片,因此它不会再占用空间 space,您将能够调用 echo。

数据容器的一些参考:

如 Docker 手册中所述:容器不需要 运行ning。它也没有说容器 "should" 完全能够 运行。

因此,不要通过 运行 仅数据容器来回应一些愚蠢的事情,例如docker run -v /webappp --name webapp myOrg/webapp echo yo

只需创建容器就足够了,永远不会run/start它。

docker create -v /webappp --name webapp myOrg/webapp

自我注意:Vagrant 不支持 docker 在配置时创建!