Docker系列(十七)——Dockerfile实战二之CMD与ENTRYPOINT

                             《 Dockerfile 实战二之 CMD 与 ENTRYPOINT 》

 

前言

在前一篇文章中主要对 《 Dockerfile实战一之自定义docker镜像 》进行了实践,本篇主要目的就是搞清楚 Dockerfile 中 CMD 和 ENTRYPOINT 指令各个的作用,以及有何区别?

 

Dockerfile 实战二之 CMD 与 ENTRYPOINT

1、CMD指令

当 Dockerfile 脚本儿文件中有多个 CMD 指令时,只有最后一个是有效的指令,如果在 docker run 启动容器时,其携带了启动参数,则 CMD 指令将会被 docker run 之后的参数所覆盖;

以 centos 基础镜像,并通过 curl 访问地址 https://www.baidu.com 为示例进行说明,新建一个 dockerfile 脚本儿文件,输入命令 “ vi dockerfilebycmd ” ,并键入内容如下:

FROM centos
RUN yum install -y curl
CMD ["curl","-s","https://www.baidu.com"]

构建生成一个新的镜像,输入命令 “ docker build -f /opt/docker/dockerfilebycmd -t huazai/web/centos:v1.0 . ” 构建成功后,如下图:

 

 

例如,需要显示 HTTP 的头信息,就需要加上 -i 参数,加入后如下图:

 

 

可以看到可执行文件找不到的报错,executable file not found。在之前说过,跟在镜像名后面的是 command,运行时会替换 CMD 的默认值。因此这里的 -i 替换了原来的 CMD,而不是添加在原来的 curl -s http://ip.cn 后面。而 -i 根本不是命令,所以自然找不到。那么如果我们希望加入 -i 这参数,我们就必须重新完整的输入这个命令:

docker run centos:v1.0 curl -s http://ip.cn -i

 

2、ENTRYPOINT 指令

当 docker run 之后的参数会被当做参数传递给 ENTRYPOINT,并组合成一条全新的命令;以 centos 为基础镜像,并通过 curl 访问地址 https://www.baidu.com 为示例进行说明,新建一个 dockerfile 脚本儿文件,输入命令 “ vi dockerfilebyentry ” ,并键入内容如下:

FROM centos
RUN yum install -y curl
ENTRYPOINT ["curl","-s","https://www.baidu.com"]

构建生成一个新的镜像,输入命令 “ docker build /opt/docker/dockerfilebyentry huazai/web/centos:v1.1 . ” 构建成功后,如下图:

 

例如,需要显示 HTTP 的头信息,就需要加上 -i 参数,此时的 -i 参数会与原参数组合成一条全新的参数命令,并被成功执行,如下图:


3、在 dokcer 中 CMD 与 ENTRYPOINT 指令相同点

  • Dockerfile 脚本儿文件中有多个 CMD 指令时,只有最后一个是有效的指令,前面的将被覆盖;
  • docker run 之后的参数会被当做参数传递给 ENTRYPOINT,并组合成一条全新的命令;

 

4、关于 curl 命令
curl 命令可以用来执行下载发送各种HTTP请求、指定 HTTP 头部等操作。如果系统没有 curl 可以使用 yum install curl 进行安装,也可以下载安装。curl是将下载文件输出到 stdout。
 
使用命令:curl http://www.baidu.com
执行后,www.baidu.com 的 html 就会显示在屏幕上了,如下图(部分截图):

 

这是最简单的使用方法。用这个命令获得了 http://curl.haxx.se 指向的页面,同样,如果这里的 URL 指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是 HTML 文档,那么缺省的将只显示文件头部,即 HTML 文档的 header。要全部显示,请加参数 -i。
 

 

 

 


 好了,关于 Docker系列(十七)——Dockerfile实战二之CMD与ENTRYPOINT 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。 
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。


作       者:华    仔
联系作者:who.seek.me@java98k.vip
来        源:CSDN (Chinese Software Developer Network)
原        文:https://blog.csdn.net/Hello_World_QWP/article/details/84580599
版权声明:本文为博主原创文章,请在转载时务必注明博文出处!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值