docker cmd

FROM busybox

ENTRYPOINT ["echo", "echo", "echo"] # 3 个部分

CMD ["c", "d", "e", "f", "g"] # 5 个部分

Docker 规则:

ENTRYPOINT 全部 + CMD 全部 = 直接拼在一起,变成一条命令!

拼起来就是:

echo echo echo c d e f g

执行结果:echo echo c d e f g

CMD 的唯一设计意义

给容器设置默认启动参数 / 默认子命令

允许用户在 docker run 镜像 后面跟内容 直接覆盖替换 这套默认参数

不用改 Dockerfile、不用重新构建镜像,就能临时换启动参数

eg:

场景 1:只用 CMD 不写 ENTRYPOINT

dockerfile:

CMD ["nginx", "-g", "daemon off;"]

此时 CMD 是完整启动命令 + 参数

docker run 镜像 就执行这条

docker run 镜像 ls -l → 直接整条替换,不跑 nginx 改跑 ls

意义:给镜像设默认启动命令,支持运行时一键替换整个命令

场景 2:ENTRYPOINT + CMD 搭配

dockerfile:

ENTRYPOINT ["/usr/bin/nginx"]

CMD ["-g", "daemon off;"]

ENTRYPOINT:固定主程序,写死不换

CMD:给主程序的默认参数

运行:

docker run 镜像 → 用 CMD 默认参数:nginx -g daemon off;

docker run 镜像 -v → 覆盖 CMD,变成:nginx -v

相关推荐
艾莉丝努力练剑1 小时前
【Linux网络】Linux 网络编程:应用层自定义协议与序列化(1)初识
linux·运维·服务器·网络·c++·udp·tcp
lpfasd1231 小时前
Docker Compose删除服务后,docker compose down无法关闭的问题解决
docker·容器·eureka
u0119608231 小时前
prefect resume pause
docker
feng_you_ying_li1 小时前
linux之文件系统(2)
linux·运维·服务器
手打猪大屁1 小时前
使用claude code 接入deepseek-v4pro
linux·windows·ai·deepseek·claude code
小新同学^O^2 小时前
简单学习 --> Docker容器
学习·docker·容器
心止水j2 小时前
拷贝完虚拟机的操作
linux·运维·服务器
我先去打把游戏先2 小时前
【虚拟机专用】Ubuntu 22.04 LTS 服务器版本镜像下载
linux·服务器·ubuntu
#山间清泉#2 小时前
VMWare虚拟机mac地址自定义配置
运维·macos·架构·vmware