关于dockerfile中CMD和ENTRYPOINT的区别

先总结一下

CMD 后面的命令会被用户输入的命令参数替换掉,而ENTRYPOINT 则是在命令后面进行添加

实验步骤

  1. 创建一个名为cmdAndEntrypoint的文件,然后在其中写入以下内容
FROM centos:7

CMD ["ls","-a"]

  1. 构建镜像,并且运行
docker build -f cmdAndEntrypoint -t cmdorent .
docker run cmdorent



3. 运行镜像的时候在后面加入参数-l
docker run cmdorent -l

我们发现这样会报错

  1. 修改cmdAndEntrypoint文件,把CMD修改为ENTRYPOINT
FROM centos:7

ENTRYPOINT ["ls","-a"]


5. 构建镜像,并且运行

docker build -f cmdAndEntrypoint -t cmdandent .
docker run cmdandent



6. 运行镜像的时候在后面加入参数-l
docker run cmdorent -l

实验总结

我们通过上面的结果可以清楚的看见,当CMD后面的命令是会被后面用户输入的命令替换的,而ENTRYPOINT则是被添加到已有命令后面

docker中有很多类似的命令,我们可以通过对比测试来理解

posted @ 2022-02-14 23:23  影梦无痕  阅读(53)  评论(0)    收藏  举报