lstate错误:使用Docker构建命令

时间:2016-10-25 11:32:02

标签: linux ubuntu docker ubuntu-14.04 dockerfile

我为灯堆创建了一个自定义图像,其中包含以下文件

apps.conf 
Dockerfile 
entrypoint.sh 
start.sh 
supervisord.conf
使用ENV,RUN,ADD和CMD命令创建

Dockerfile

每个应用程序安装成功,但将其粘贴在ADD命令并检查给定的路径是否正确。

ADD /home/ktpl/nayan/MyLamp/supervisord.conf /etc/supervisor/supervisord.conf

ADD /home/ktpl/nayan/MyLamp/apps.conf /etc/supervisor/conf.d/apps.conf

ADD /home/ktpl/nayan/MyLamp/entrypoint.sh /entrypoint.sh

ADD /home/ktpl/nayan/MyLamp/start.sh /start.sh

进程停留在添加命令。:

lstat home/ktpl/nayan/lamp/supervisord.conf: no such file or directory

2 个答案:

答案 0 :(得分:0)

Docker构建始终相对于上下文工作 - 即您在docker build命令中传递的目录。 You cannot use absolute paths in ADD,您应该指定相对于构建上下文的源文件。

对于本地文件,您也应该使用COPY instead of ADD,因此Dockerfile变为:

COPY ./supervisord.conf /etc/supervisor/supervisord.conf
#etc.

然后使用docker build -t my-tag .

从MyLamp目录构建它

答案 1 :(得分:0)

ADD可用于在构建时将本地文件复制到图像。

一些事情:

  • 您正在使用当前目录构建图像
  • 在您的情况下,/home/ktpl/nayan/lamp是有效目录
  • 不确定您是否存在目录/home/ktpl/nayan/MyLamp并且文件存在于其中。

根据documentation of docker

  

路径必须位于构建的上下文中;你不能添加../something / something,因为docker build的第一步是将上下文目录(和子目录)发送到docker守护进程。

如果您的文件与构建图片位于同一目录中,那么您可以在Dockerfile

中使用以下语句
ADD ./supervisord.conf /etc/supervisor/supervisord.conf

ADD ./apps.conf /etc/supervisor/conf.d/apps.conf

ADD ./entrypoint.sh /entrypoint.sh

ADD ./start.sh /start.sh

当然,就像在其他答案中提到的那样,也可以使用COPY

示例Dockerfile内容:

FROM busybox
ADD ./test.txt /test.txt
CMD ls /

您可以构建图像并运行它,显示正在下图中添加的文件。

enter image description here

如果所有文件和目录都存在且仍然看到此问题,请检查.dockerignore是否有相同的条目。