我创建了一个仅包含数据的容器,其中包含供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是否需要始终执行某些操作,是否可以运行不执行任何操作或不会产生错误的暂存容器。
答案 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图像作为基础。您已经缓存了图像,因此它不会占用更多空间,您将能够调用回声。
数据容器的一些参考: