簡體   English   中英

lstate錯誤:使用Docker構建命令從自定義映像構建Docker時沒有這樣的文件或目錄

[英]lstate error: no such file or directory while building Docker from a custom image with Docker build command

我已經為燈堆創建了一個自定義圖像,其中包含以下文件

apps.conf 
Dockerfile 
entrypoint.sh 
start.sh 
supervisord.conf

Dockerfile是使用ENV,RUN,ADD和CMD命令創建的。

每個應用程序安裝成功,但將其粘貼在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

Docker構建始終相對於上下文工作 - 即您在docker build命令中傳遞的目錄。 您不能在ADD中使用絕對路徑 ,您應該指定相對於構建上下文的源文件。

對於本地文件,您應該使用COPY而不是ADD ,因此您的Dockerfile變為:

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

然后使用docker docker build -t my-tag .從MyLamp目錄構建它docker build -t my-tag .

ADD可用於在構建時將本地文件復制到映像。

幾件事:

  • 您正在使用當前目錄構建映像
  • 在您的情況下, /home/ktpl/nayan/lamp是有效目錄
  • 不確定你是否有目錄/home/ktpl/nayan/MyLamp存在且文件存在於那里。

根據docker文檔

路徑必須位於構建的上下文中; 你不能添加../something / something,因為docker構建的第一步是將上下文目錄(和子目錄)發送到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 /

您可以構建圖像並運行它顯示在下圖中添加的文件。

在此輸入圖像描述

如果存在所有文件和目錄但仍然看到此問題,則檢查.dockerignore是否具有相同的條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM