docker从头开始运行数据容器

时间:2015-01-07 09:31:43

标签: docker

我创建了一个仅包含数据的容器,其中包含供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自动化它,结果证明是不行的。由于此错误,自动化过程总是失败。

到目前为止,我唯一的解决方案是从一个发行版中扩展我的小图片,IMHO对于仅数据容器没有意义,只是为了调用echo或true!

在docker中是否有NOP exec命令,或者docker是否需要始终执行某些操作,是否可以运行不执行任何操作或不会产生错误的暂存容器。

2 个答案:

答案 0 :(得分:7)

如Docker手册中所述:容器不需要运行。它也没有说容器&#34;应该&#34;能够一直运行。

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

已经足够只需创建容器,永远不会运行/启动它。

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

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

答案 1 :(得分:4)

你为什么要用刮痕?

只需使用nginx图像作为基础。您已经缓存了图像,因此它不会占用更多空间,您将能够调用回声。

数据容器的一些参考: