You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dockerfile中CMD命令未按序执行,sleep未运行致容器退出求助

问题原因及解决方法

你的Dockerfile里CMD的写法有误,导致sleep命令根本没被执行。

错误原因

sh -c的使用要求是把完整的命令字符串作为它的第二个参数,而你把wget https://httpbin.org/get、&&、sleep 1000000000000拆成了三个独立参数。此时sh只会执行第三个参数对应的wget命令,后面的&&和sleep语句会被当成sh的位置变量(类似$0、$1),完全不会参与命令逻辑。所以wget执行完成后,容器就直接退出了。

正确写法

把整个命令逻辑合并成一个字符串,作为sh -c的参数:

FROM ubuntu:latest
RUN apt-get update \
&& apt-get install -y iputils-ping wget

CMD ["sh","-c","wget https://httpbin.org/get && sleep 1000000000000"]

额外优化建议

如果你的需求只是测试镜像构建时的下载能力,也可以把wget放到RUN阶段执行,然后单独用CMD保持容器运行,结构会更清晰:

FROM ubuntu:latest
RUN apt-get update \
&& apt-get install -y iputils-ping wget \
&& wget https://httpbin.org/get

CMD ["sleep", "1000000000000"]

这样每次启动容器时就不会重复下载文件了。

内容的提问来源于stack exchange,提问作者Eugenio.Gastelum96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:25:07