docker从头开始运行数据容器

我创build了一个仅包含静态HTML文件的数据容器,这些文件将被nginx容器使用。 目标是我的webapp提供一个nginx可以使用的卷。

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

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

当我从命令行运行创build的容器时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 $PATHError response from daemon: Cannot start container db7fd5cd40d76311f8776b1710b4fe6d66284fe75253a806e281cd8ae5169637: exec: "echo": executable file not found in $PATH ,如果当然是正确的,因为图像没有任何命令可以执行。 没有命令运行容器是不可能的。

虽然这个命令行上的错误对我来说不是一个大问题,因为我知道数据容器仍然是创build的,现在可以通过nginx访问,如果我想用Vagrant自动化它,结果是不行的。 自动化进程总是因为这个错误而失败。

我迄今为止唯一的解决scheme是从一个恕我直言,对于只有数据的容器才有意义的发行版来扩展我的小小方便的图像,以便调用echo或true!

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

正如Docker手册中提到的:容器不需要运行。 它也没有说容器“应该”能够运行。

所以,而不是通过运行一个数据只容器,例如docker run -v /webappp --name webapp myOrg/webapp echo yo

只创build容器并且不运行/启动它已经足够了。

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

自我注意:在configuration时,Vagrant不支持docker创build!

你为什么用划痕?

只需使用nginx图像作为基础。 你已经有图像caching,所以它不会占用更多的空间,你可以调用回声。

数据容器的一些参考:

  • 数据只是容器的疯狂
  • 了解Docker中的卷
  • 关于数据容器的官方文档