Dockerfile CMD ENTRYPOINT 命令区别

区别

学习dockerfile可以参考你必须知道Dockerfile

RUN

命令执行命令并创建新的镜像层,通常用于安装软件包


CMD

命令设置容器启动后默认执行的命令及其参数

但CMD设置的命令能够被docker run命令后面的命令行参数替换


ENTRYPOINT

配置容器启动时的执行命令(不会被忽略,一定会被执行,即使运行 docker run时指定了其他命令)

再具体聊一聊

FROM centos
MAINTAINER allocator
RUN yum install -y nginx
RUN echo 'hello world' > /usr/share/nginx/html/index.html
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx"]

可以这样理解

  • 如果没有ENTRYPOINTCMD 要写完整的内容命令[command,arg1,arg2] ,docker run 后面会覆盖掉 cmd

  • 如果有ENTRYPOINTCMD 可以只写 [arg1,arg2] ,那么ENTRYPOINT[command]

  • 还可以这样ENTRYPOINT[command,arg1] CMD 可以只写 [arg2]

# 启动镜像,arg3 会代替CMD的内容
docker run -it <image-id> arg3
# 如果我们run后面加了其他命令和参数,这个命令可能会被当成参数,执行command other-command arg3,可能会报错
docker run -it <image-id> other-command arg3

ENTRYPOINT的两种写法

# ENTRYPOINT的两种写法:

docker exec的形式
ENTRYPOINT [“executable”,”param1”,”param2"]
任何docker run设置的命令参数或者CMD指令的命令,都将作为ENTRYPOINT 指令的命令参数,追加到ENTRYPOINT指令之后。


shell的形式
ENTRYPOINT command param1 param2
这种格式禁止追加任何参数,即CMD指令或docker run后面的参数都将被忽略。采用shell格式,在容器中执行时,自动调用shell。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值