ENTRYPOINT和CMD的区别以及用法

54 阅读1分钟

老大说了,服务器随便你玩,想研究啥看你,但是一定要有成果。(★ ω ★)

其实我想研究web3,虚拟币之类的。但是我应该不能给出什么落地的成果。/(ㄒoㄒ)/~~

还是精进下前后端+测试+运维hhhh

博主讲这个,我老走神,只能边敲边记录了

来了!

首先 CMD 很常见,它的主要的作用就是: 运行某些命令 加上某些参数

但是 指定了 ENTRYPOINT 后,CMD 就被当做参数传递给 ENTRYPOINT

这话我也听不懂 接着往下看吧...

写个用例demo

FROM centos:7.8.2003
RUN rpm --rebuilddb && yum install epel-release -y
RUN rpm --rebuilddb && yum install curl -y
CMD ["curl","-s","http://ipinfo.io/ip"]

当我们docker build .创建一个镜像

然后修改这个镜像名,docker tag 镜像id my-image

然后运行这个镜像,docker run my-image

他会创造一个容器 执行CMD 最后返回给我们一个ip。

但是如果我们想再添加一个参数,比如说想查看 请求头 docker run my-image -I

这是会报错的,这个传入的参数会覆盖掉CMD原本的内容

怎么解决这个问题

用 ENTRYPOINT

FROM centos:7.8.2003
RUN rpm --rebuilddb && yum install epel-release -y
RUN rpm --rebuilddb && yum install curl -y
ENTRYPOINT ["curl","-s","http://ipinfo.io/ip"]

image.png

发现可以。