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

如何在Docker镜像启动时每次执行Shell更新命令?

Docker启动时执行系统更新命令的正确写法

你的原有CMD写法存在两个核心问题:

  1. 使用了exec模式的CMD数组写法,这种模式不会调用shell,无法解析&&这类shell控制符;
  2. 错误加入了run命令——Dockerfile里的RUN是构建阶段指令,启动时不需要也不能使用该命令。

以下是两种可行的修正方案:

方案1:Shell形式CMD

直接以字符串形式编写命令,Docker会自动用/bin/sh -c包裹执行,天然支持shell语法:

CMD apt update -y && apt full-upgrade -y && apt autoremove -y && apt clean -y && apt autoclean -y

方案2:Exec形式调用Shell

如果需要指定特定shell(比如bash),可以用数组形式显式调用shell并传入完整命令:

CMD ["/bin/bash", "-c", "apt update -y && apt full-upgrade -y && apt autoremove -y && apt clean -y && apt autoclean -y"]

额外提醒

虽然以上写法能实现启动时更新,但这不符合容器的最佳实践——容器应当保持镜像的不可变性,系统更新更适合在构建阶段通过RUN命令完成,避免每次启动容器都重复执行更新操作。

内容的提问来源于stack exchange,提问作者John Stud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:32:40