dockerfile中ENTRYPOINT与CMD的结合使用及区别
dockerfile中ENTRYPOINT与CMD的结合使用及区别,博智网带你了解详细信息 。
我们在上篇小作文[docker容器dockerfile详解]对中dockerfile有了比较全面的认识,我们也提到`ENTRYPOINT`和`CMD`都可以指定容器启动命令 。因为这两个命令是掌握dockerfile编写的核心,所以这边还是单独拿出来再讲一讲 。





首先我们查看
Dockerfile,这里我们只关注启动命令,如下:...COPY docker-entrypoint.sh /COPY 10-listen-on-ipv6-by-default.sh /docker-entrypoint.dCOPY 20-envsubst-on-templates.sh /docker-entrypoint.dCOPY 30-tune-worker-processes.sh /docker-entrypoint.dENTRYPOINT ["/docker-entrypoint.sh"]EXPOSE 80STOPSIGNAL SIGQUITCMD ["nginx", "-g", "daemon off;"]
从上面我们可以看到,在启动nginx容器时首先运行
docker-entrypoint.sh脚本并把CMD命令中的参数nginx -g "daemon off;"传递进来 。即docker run不添加参数时启动容器相当于执行如下脚本与默认参数 。#docker-entrypoint.sh nginx -g "daemon off;"
当我们使用docker run 传入参数会怎样?
我传入nginx-debug
#docker run -dt nginx nginx-debug -g "daemon off;"
此时启动容器相当于执行如下脚本与参数
#docker-entrypoint.sh nginx-debug -g "daemon off;"
我们通过ps来看一下我们启动的容器
[root@localhost dockerfiles]# ps -ef|grep nginxroot632763060 Aug12 pts/000:00:00 nginx: master process nginx -g daemon off;101638463270 Aug12 pts/000:00:00 nginx: worker process101638563270 Aug12 pts/000:00:00 nginx: worker processroot16800 167803 12:51 pts/000:00:00 nginx: master process nginx-debug -g daemon off;10116857 168000 12:51 pts/000:00:00 nginx: worker process10116858 168000 12:51 pts/000:00:00 nginx: worker process
显然我们两种参数nginx、nginx-debug的容器都启动成功!
也就是说我们通过
ENTRYPOINT ["/docker-entrypoint.sh"]指定的命令在启动时无论如何都会执行,并且可以接收到了docker run 的参数 。docker-entrypoint.sh是什么?docker-entrypoint.sh这是一个预处理脚本通常用来过滤命令行参数或者执行exec 来启动容器为1的进程 。
通过ENTRYPOINT+CMD实现命令默认参数或接收docker run 参数是一种非常流行并且有用的dockerfile编写方式 。
【dockerfile中ENTRYPOINT与CMD的结合使用及区别】到此这篇关于dockerfile中ENTRYPOINT与CMD的结合的文章就介绍到这了,更多相关dockerfile中ENTRYPOINT与CMD内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!
推荐阅读
- 12mis含义是什么
- 14点30分是什么时辰
- 12306的积分有什么用
- bios中fastboot要开吗
- cdr中要怎么进行居中对齐
- 中华鲟是保护动物吗
- 9岁身高有多高
- 中国有几大名山分别在哪里
- 圣经中麦基洗德是什么人
- 泰勒科学管理思想中对人的研究仅仅存在于什么的范畴
