【Dockerfile使用案例】CMD和ENTRYPOINT指令使用案例

CMD/ENTRYPOINT都是指定一个容器启动时要运行的命令。

CMD

功能:Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。
示例(以tomcat为例):
tomcat的Dockerfile的最后一行是:

CMD ["catalina.sh", "run"]

运行命令:

docker run -it -p 7777:8080 tomcat:latest ls -l

结尾的ls -l相当于在Dockerfile最后加一行:

CMD ls -l

在这里插入图片描述
在这里插入图片描述
可以看出ls -l将CMD [“catalina.sh”, “run”]命令覆盖了,并没有启动tomcat

ENTRYPOINT

功能:docker run运行后的参数会被当做参数传递给ENTRYPOINT,之后形成新的命令组合。
示例:
制作可以查询ip的容器。
编写Dockerfile:

FROM centos
RUN yum -y install curl
CMD ["curl","-s","http://ip.cn"]

curl命令可以用来执行下载,发送各种HTTP请求,指定HTTP头部等操作。

构建镜像:

docker build -f ./mydocker/Dockerfile3 -t myip .

在这里插入图片描述
之后运行容器:

docker run -it myip

应该会显示ip地址。
curl命令如果要显示头部信息需要加-i参数,但docker run -it myip -i无法执行。
原因是docker run后的参数会覆盖最后一条CMD命令,所以这里应该使用ENTRYPOINT指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值