48-Dockerfile-CMD/ENTRYPOINT指令


前言

  • 本篇来学习下Dockerfile中的CMD/ENTRYPOINT指令

CMD

作用
  • 启动容器时默认执行的命令

说明:

  • 一个 Dockerfile 只有一个 CMD 指令,只有最后一个 CMD 指令生效
  • 使用 docker run -d xxx CMD 命令是可以覆盖 Dockerfile 中的 CMD 指令的
格式
# exec 方式, 首选方式  CMD ["可执行命令", "参数1", "参数2"...]
CMD ["executable","param1","param2"]

# 为 ENTRYPOINT 提供默认参数
CMD ["param1","param2"]

# shell 形式  CMD 命令 参数1  参数2
CMD command param1 param2
使用示例
  • 新建dockerfile
FROM ubuntu
#  CMD 和 ENTRYPOINT 作为唯一入口,写多个,只有最后一个生效
# shell方式
CMD ping bing.com

# exec方式
CMD [ "sh", "-c", "echo $HOME" ]
  • 制作镜像
docker build -t test --force-rm --no-cache .
  • 运行容器
# --rm 表示容器退出,自动删除
docker run -it --rm test
  • 可以看到只执行了后面的echo $HOME,没执行ping 命令
    在这里插入图片描述

ENTRYPOINT

作用

  • 指定镜像的默认入口命令,该入口命令会在启动容器时作为根命令执行,所有其他传入值作为该命令的参数

说明:

  • 一个 Dockerfile 只有一个 ENTRYPOINT 指令,只有最后一个 ENTRYPOINT 指令生效

格式

# exec 格式
ENTRYPOINT ["executable", "param1", "param2"]

# shell 格式
ENTRYPOINT command param1 param2

使用示例

  • 新建dockerfile
FROM ubuntu
#  CMD 和 ENTRYPOINT 作为唯一入口,写多个,只有最后一个生效
# shell方式
ENTRYPOINT ping baidu.com
# exec方式
ENTRYPOINT [ "sh", "-c", "echo $HOME" ]
  • 制作镜像
docker build -t test --force-rm --no-cache .
  • 运行容器
docker run -it --rm test

在这里插入图片描述

CMD/ENTRYPOINT区别

  • CMD :指定这个容器启动的时候要运行的命令,会覆盖原命令,不可以追加命令
  • ENTRYPOINT :指定这个容器启动的时候要运行的命令,可以追加命令
CMD使用示例
  • dockerfile
FROM ubuntu
CMD ["ls","-a"]
  • 制作镜像
docker build -t test --force-rm --no-cache .
  • 运行容器
# 覆盖 ls -a; -l命令是不存在的,所以会报错
docker run -it --rm test -l

在这里插入图片描述

ENTRYPOINT使用示例
  • dockerfile
FROM ubuntu
ENTRYPOINT ["ls","-a"]
  • 制作镜像
docker build -t test --force-rm --no-cache .
  • 运行容器
# 会追加命令 相当于执行  ls  -a -l
docker run -it --rm test -l

在这里插入图片描述
`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值