基本原则
- ENTRYPOINT和CMD功能相同,都是设置程序启动的脚本;
- ENTRYPOINT一旦出现,就会把CMD当做一个参数来对待。
列举一个查询ip地址的dockerfile示例:
```
FROM ubuntu:18.04
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT [ "curl", "-s"]
CMD [""https://ip.cn""]
```
运行结果:
docker run myip # success
docker run myip -i # unsuccess 因为-i 将CMD给覆盖了
docker run myip “https://ip.cn” # success
docker run myip “https://ip.cn” -i #success
参考:
- https://medium.com/@oprearocks/how-to-properly-override-the-entrypoint-using-docker-run-2e081e5feb9d
- https://docs.docker.com/engine/reference/run/#entrypoint-default-command-to-execute-at-runtime