[英]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.