栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

一起学Docker:CMD与ENTRYPOINT的区别

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一起学Docker:CMD与ENTRYPOINT的区别

CMD

CMD指令为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:CMD 在docker run 时运行,RUN 是在 docker build时运行。
注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

ENTRYPOINT

类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。
优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

CMD测试

建一个简单的dockerfile文件.内容为下面的2行内容

FROM centos
CMD ["ls","-s"]

使用如下的命令,建造一个镜像并使用镜像建一个容器

docker build .
docker run 7f59a95bfe72

可以看到,容器运行起来后直接运行了CMD中的命令。

覆盖CMD的命令

使用下面的命令运行一个容器,可以看到已经覆盖了CMD设置的命令

docker run 7f59a95bfe72 ls -sl

ENTRYPOINT测试

建一个简单的dockerfile文件.内容为下面的2行内容

FROM centos
ENTRYPOINT ["ls","-s"]

建造一个镜像并使用镜像建一个容器

docker build .
docker run 178be5e4e3f4

运行后和默认的和CMD是一样的

在ENTRYPOINT设置的指令后面追加指令

使用 docker run **** -l看到-l已经追加到dockerfile设置的指令后面

总结:CMD设置的指令在镜像运行时自动运行,无法追加指令,只能把指令全部覆盖
ENTRYPOINT设置的指令在镜像运行时与CMD一样,可以在新建镜像时设置的指令后追加新的指令,也可以使用 --entrypoint 覆盖指令。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/865089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号