docker导出日志到本地的方法是什么
257
2022-10-20
dockerfile 中的CMD 和 ENTRYPOINT 的区别
十年河东,十年河西,莫欺少年穷
学无止境,精益求精
前面两篇博客描述了dockerfile基础及自定义dockerfile,今日来个小练习
前面两篇博客为:dockerfile【命令脚本】 构建镜像基础知识 、 docker 镜像的生成方式,初识dockerfile,dockerfile 指定匿名挂载
CMD 采取的是替换策略,ENTRYPOINT 采取的追加策略
练习 1
使用CMD命令编写一个简易的dockerfile
FROM centosMAINTAINER wolong.Chen
2、构建镜像
docker build -f dockerfile01 -t cmdtest .
2.1、构建过程如下:
Sending build context to Docker daemon 3.072kBStep 1/3 : FROM centos ---> 5d0da3dc9764Step 2/3 : MAINTAINER wolong.Chen
3、查看构建的镜像
docker images
4、运行镜像
docker run d0e4226cd576
5、说明
此镜像直接以centos为基础镜像,并通过CMD执行 ls -a 命令
6、执行如下命令是否能运行cmdtest镜像
docker run d0e4226cd576 -l
因为镜像中会执行 ls -a 命令,我们运行时加上 -l 是希望直接运行 ls -al 命令,此时容器是否能成功执行呢?
答案是执行报错,报错信息如下:
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.ERRO[0001] error waiting for container: context canceled
大致意思是 -l 不是一条有效的命令
因此,也证明了CMD采取的并非追加策略,而是替换策略
练习 2
使用ENTRYPOINT命令编写一个简易的dockerfile
此时只需将我们的dockerfile 中的cmd 替换为 ENTRYPOINT 即可
编写dockerfile 如下:
FROM centosMAINTAINER wolong.Chen
构建镜像
docker build -f dockerfile01 -t enttest .
执行镜像 ,并在后面追加命令参数 -l
docker run 8a2063322a2e -l
执行结果:
由此可见 CMD 属于命令替换,而 ENTRYPOINT 属于命令追加
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~