docker从头开始运行数据容器

docker从头开始运行数据容器,docker,Docker,我创建了一个只包含数据的容器,其中包含一个nginx容器要使用的静态HTML文件。目标是我的webapp提供一个nginx可以使用的卷 因此,我创建了一个简单的Dockerfile: FROM scratch MAINTAINER me <me@me.com> ADD dist/ /webappp/ 从头开始 维护我 添加dist//webappp/ 当我从命令行运行创建的容器时run-d-v/webappp--name webapp myOrg/webapp echo yo 我

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

因此,我创建了一个简单的Dockerfile:

FROM scratch
MAINTAINER me <me@me.com>
ADD dist/ /webappp/
从头开始 维护我 添加dist//webappp/ 当我从命令行运行创建的容器时
run-d-v/webappp--name webapp myOrg/webapp echo yo

我从守护程序获得错误
错误响应:无法启动容器db7fd5cd40d76311f8776b1710b4fe6d66284fe75253a806e281cd8ae5169637:exec:“echo”:在$PATH中找不到可执行文件,当然,如果正确,因为映像根本没有命令,则可以执行。在没有命令的情况下运行容器是不可能的

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

到目前为止,我唯一的解决方案是从一个发行版中扩展我的小而方便的映像,而IMHO对于一个只包含数据的容器来说并没有意义,只是为了调用echo或true


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

为什么要使用scratch

只需使用nginx图像作为基础。您已经缓存了图像,因此它不会占用更多空间,并且您可以调用echo

数据容器的一些参考:


如Docker手册所述:容器不需要运行。它也没有说容器“应该”能够运行

因此,不要通过运行一个只包含数据的容器(例如,
docker run-v/webappp--name webapp myOrg/webapp echo yo)来重复一些愚蠢的事情

只要创建容器而不运行/启动它就足够了

docker create-v/webappp——名称webapp myOrg/webapp


请注意:Vagrant不支持docker在设置时创建

我不确定这是否有帮助,但你试过了吗?顺便说一句,我最终使用busybox作为我的数据容器。您的大小是对的!但我不想有任何开销(比喻地说)。有一天,有人可能会启动“仅数据”容器,因为他可能会通过读取其名称而认为“嘿”,这就是nginx。它甚至可以工作,但肯定不是你想要的nginx配置。因为没有人会注意只从映像更新数据,并使其与正在工作的nginx配置同步。因此,对我来说,这只是一个解决方法,就像使用busybox或任何其他迷你发行版一样。不,因为我认为你不能用
docker start
覆盖echo命令。顺便说一句,这是在echo命令中添加容器描述的一个很好的理由,因为它将显示在docker ps和inspect上。回答得很好!请注意,在docker 1.5.0中,我必须附加一个命令来运行
docker create
。当然,该命令不必存在,因为容器永远不会运行。