[英]Docker run commands works but dockerfile not
我在運行 Dockerfile 的圖像時遇到問題。CLI 命令工作正常,但是當我使用 Dockerfile 時,我從本地主機收到錯誤消息:
本地主機沒有發送任何數據。
我正在做的很簡單。 通過 CLI:
docker run -d --name mytomcat -p 8080:8080 tomcat:latest
docker exec -it mytomcat /bin/bash
mv webapps webapps2
mv webapps.dist/ webapps
exit
哪個工作正常。
我的 Dockerfile:
FROM tomcat:latest
CMD mv webapps webapps2 && mv webapps.dist/ webapps && /bin/bash
構建並運行:
docker build -t myrepo/tomacat:1.00 .
docker run -d --name mytomcat -p 8080:8080 myrepo/tomacat:1.00
不起作用並顯示上述錯誤。
注意:我正在使用 mv 命令,因為我收到 404 錯誤!
有人知道這里的問題嗎?
當您的 Dockerfile 有一個CMD
命令時,它會代替基本映像中的命令運行。 使用tomcat
鏡像,基礎鏡像將運行 Tomcat 服務器; 但是對於這個 Dockerfile,它試圖運行bash
shell,並且沒有任何立即退出的輸入。
要只是移動文件,通常最好使用COPY
和RUN
指令設置一次圖像,而不是每次運行容器時都嘗試重復這些步驟。 對於基本圖像已經具有合理CMD
的此設置,您無需在您自己的自定義 Dockerfile 中重復它。
FROM tomcat:latest
RUN mv webapps webapps2 && mv webapps.dist/ webapps
# no particular mention of bash; use the `CMD` from the base image
基本映像包含某種需要配置的運行時並不少見,但基本映像的CMD
仍然是正確的。 除了tomcat
, nginx
和php:fpm
的工作方式類似; 只要他們的配置文件和代碼在正確的地方,你就不需要重復CMD
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.