首页 > 其他 > 详细

Dockfile里的CMD和ENTRYPOINT的区别

时间:2020-09-28 01:11:53      阅读:37      评论:0      收藏:0      [点我收藏+]
FROM alpine:3.12.0
RUN set -x \
&& echo "https://mirrors.aliyun.com/alpine/edge/main" > /etc/apk/repositories \
&& echo "https://mirrors.aliyun.com/alpine/edge/testing" >> /etc/apk/repositories \
&& apk add --no-cache mysql-client bash bash-doc bash-completion \
&& sed -i ‘s/ash/bash/g‘ /etc/passwd
CMD ["/bin/bash"]
# ENTRYPOINT ["mysql"]


当CMD ["/bin/bash"]开启而注释ENTRYPOINT时:
docker run --rm --name mysqlcli mysqlcli:1.0.9 mysql -uroot -h10.11.96.190 -ppassw0rd --database=tgac_test_docker -e "show tables;"
Tables_in_tgac_test_docker


当ENTRYPOINT ["mysql"]开启而注释CMD时:
#docker run --rm --name mysqlcli mysqlcli:1.0.8 mysql -uroot -h10.11.96.190 -ppassw0rd --database=tgac_test_docker -e "show tables;"
Tables_in_mysql
为啥这里是mysql这个database的,不是期望的tgac_test_docker里的tables呢?

区别来了:

用CMD,run的时候后面跟完整命令,用ENTRYPOINT,后面只跟参数,我昨晚执行时用的一样的,那么ENTRYPOINT后面的mysql被当做了database,而不是客户端命令行mysql命令

参考:

https://blog.csdn.net/u010900754/article/details/78526443
这篇文档就说的很清楚了,而且有实际演示,看输出就知道了。

Dockfile里的CMD和ENTRYPOINT的区别

原文:https://blog.51cto.com/docker/2537120

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!