《 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 |
版权声明: | 本文为博主原创文章,请在转载时务必注明博文出处! |