Dockerfile 中CMD 和 ENTRYPOINT指令
2015-07-23 21:48
831 查看
CMD 指令的三种格式:
推荐格式,类似于执行exec CMD ["exectuable","param1","param2"]
作为entrypoint指令的参数 CMD ["param1","param2"]
类似于执行 /bin/bash -c CMD command param1 param2
CMD指令用于Dockerfile 文件中时,只有最近的一条才会生效(存在多条CMD无有意义)。
ENTRYPOINT 指令的两种格式:
推荐格式,类似于执行 exec ENTRYPOINT ["executable", "param1", "param2"]
类似于执行 /bin/bash -c ENTRYPOINT command param1 param2
ENTRYPOINT 指令用于Dockerfile文件中时,只有最近一条才会生效(存在多条CMD指令无意义)
共同点:
1、CMD 和 ENTRYPOINT 指令用在Dockerfile文件中时,都是最近一条指令生效
2、有两种指令形式是重合的。
3、都可以在创建container 时被覆盖
异同点:
1、ENTRYPOINT通常用于在创建container时执行一个启动的点,而这个功能是cmd所不能取代的
2、CMD 指令的其中一种形式是ENTRYPOINT 指令的参数,例如Dockerfile:
被覆盖举例:
CMD 被覆盖的例子,假如生成一个image 的 dockerfile 文件为如下格式:
创建container 时:
docker run -it ubuntu:cmd pwd # 此时pwd 指令就覆盖了 /usr/bin/wc --help 指令而显示的为一个路径。
ENTRYPOINT被覆盖的例子,假如生成一个image 的 dockerfile 文件的格式如下:
创建container 时:
docker run -d --entrypoint="/usr/sbin/nginx" debian:apache "-g 'daemon off;'"
此时 /usr/sbin/apache2ctl -D FOREGROUND 将被 /usr/sbin/nginx -g "daemon off;" 覆盖
且这里,-g "daemon off" 为 CMD指令作为 ENTRYPOINT指令的参数。
本文出自 “诡迹” 博客,请务必保留此出处http://unixman.blog.51cto.com/10163040/1677744
CMD ["executable","param1","param2"](exec form, this is the preferred form)
CMD ["param1","param2"](as default parameters to ENTRYPOINT)
CMD command param1 param2(shell form)
推荐格式,类似于执行exec CMD ["exectuable","param1","param2"]
作为entrypoint指令的参数 CMD ["param1","param2"]
类似于执行 /bin/bash -c CMD command param1 param2
CMD指令用于Dockerfile 文件中时,只有最近的一条才会生效(存在多条CMD无有意义)。
ENTRYPOINT 指令的两种格式:
ENTRYPOINT ["executable", "param1", "param2"](the preferred exec form)
ENTRYPOINT command param1 param2(shell form)
推荐格式,类似于执行 exec ENTRYPOINT ["executable", "param1", "param2"]
类似于执行 /bin/bash -c ENTRYPOINT command param1 param2
ENTRYPOINT 指令用于Dockerfile文件中时,只有最近一条才会生效(存在多条CMD指令无意义)
共同点:
1、CMD 和 ENTRYPOINT 指令用在Dockerfile文件中时,都是最近一条指令生效
2、有两种指令形式是重合的。
3、都可以在创建container 时被覆盖
异同点:
1、ENTRYPOINT通常用于在创建container时执行一个启动的点,而这个功能是cmd所不能取代的
2、CMD 指令的其中一种形式是ENTRYPOINT 指令的参数,例如Dockerfile:
FROM ubuntu ENTRYPOINT ["top", "-b"] CMD ["-c"]
被覆盖举例:
CMD 被覆盖的例子,假如生成一个image 的 dockerfile 文件为如下格式:
FROM ubuntu CMD ["/usr/bin/wc","--help"]docker build -t ubuntu:cmd .
创建container 时:
docker run -it ubuntu:cmd pwd # 此时pwd 指令就覆盖了 /usr/bin/wc --help 指令而显示的为一个路径。
ENTRYPOINT被覆盖的例子,假如生成一个image 的 dockerfile 文件的格式如下:
FROM debian:stable RUN apt-get update && apt-get install -y --force-yes apache2 EXPOSE 80 443 VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"] ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]docker build -t debian:apache .
创建container 时:
docker run -d --entrypoint="/usr/sbin/nginx" debian:apache "-g 'daemon off;'"
此时 /usr/sbin/apache2ctl -D FOREGROUND 将被 /usr/sbin/nginx -g "daemon off;" 覆盖
且这里,-g "daemon off" 为 CMD指令作为 ENTRYPOINT指令的参数。
本文出自 “诡迹” 博客,请务必保留此出处http://unixman.blog.51cto.com/10163040/1677744
相关文章推荐
- linux的docker上如何安装mysql
- ubuntu15.04下安装docker
- ubuntu15.04下安装docker
- ulimit的一些理解和在docker中的经验
- Openstack juno 与 Docker集成(学习笔记,仅供参考)
- Docker私有仓库建立(CentOS7)
- Docker背后的内核知识—Namespace资源隔离
- centos7 安装docker
- Docker基础技术:Linux Namespace(上)
- Docker 101:介绍与入门体验
- Docker 清理命令
- 7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io
- PHP 应用 Docker 开发大礼包 – Powered by DaoCloud
- 快速理解Docker - 容器级虚拟化解决方案
- Docker持续部署图文详解
- CentOS系统下docker的安装配置及使用详解
- Docker之常用命令
- 快速理解Docker - 容器级虚拟化解决方案
- DockerUI安装、使用
- Docker进入主流,PaaS大有可为