https://cloud.tencent.com/developer/article/1906538
CMD與ENTRYPOINT區別
- CMD命令設定容器啟動後預設執行的命令及其引數,但CMD設定的命令能夠被docker run命令後面的命令列引數替換
- ENTRYPOINT配置容器啟動時的執行命令(不會被忽略,一定會被執行,即使執行 docker run時指定了其他命令)
- ENTRYPOINT 的 Exec 格式用於設定容器啟動時要執行的命令及其引數,同時可透過CMD命令或者命令列引數提供額外的引數
- ENTRYPOINT 中的引數始終會被使用,這是與CMD命令不同的一點
1. Shell格式和Exec格式命令
Shell格式:指令 <command>
CMD java -jar test.jar
Exec格式:指令 ["executable", "param1", "param2", ...]
ENTRYPOINT ["java", "-jar", "test.jar"]
2. Shell格式和Exec格式命令的區別
- Shell格式中的命令會直接被Shell解析
- Exec格式不會直接解析,需要加引數
3. CMD和ENTRYPOINT指令支援的命令格式
CMD 指令的命令支援以下三種格式:
- Exec格式: CMD ["executable","param1","param2"]
- Exec引數: CMD ["param1","param2"] 用來為ENTRYPOINT 提供引數
- Shell格式: CMD command param1 param2
ENTRYPOINT 指令的命令支援以下了兩種格式:
- Exec格式:可用使用CMD的引數和可使用
docker run [image] 引數
後面追加的引數 - Shell格式 :不會使用 CMD引數,可使用
docker run [image] 引數
後面追加的引數
4. 示例
ENTRYPOINT的Exec格式
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
# 啟動容器的命令: docker run -it [image]
# 輸出: Hello
# 啟動容器的命令: docker run -it [image] Test
# 輸出: Hello Test
ENTRYPOINT的Exec格式
+ CMD的Exec格式
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
CMD ["Word"]
# 啟動容器的命令: docker run -it [image]
# 輸出: Hello Word
# 啟動容器的命令: docker run -it [image] Test
# 輸出: Hello Test
ENTRYPOINT的Exec格式
+ CMD的shell格式
# Dockerfile
FROM centos
ENTRYPOINT ["/bin/echo", "Hello"]
CMD Word
# 啟動容器的命令: docker run -it [image]
# 輸出: Hello /bin/sh -c Word
# 啟動容器的命令: docker run -it [image] Test
# 輸出: Hello Test
ENTRYPOINT的shell格式
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
# 啟動容器的命令: docker run -it [image]
# 輸出: Hello
# 啟動容器的命令: docker run -it [image] Test
# 輸出: Hello
ENTRYPOINT的shell格式
+ CMD的Shell格式
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
CMD Word
# 啟動容器的命令: docker run -it [image]
# 輸出: Hello
# 啟動容器的命令: docker run -it [image] Test
# 輸出: Hello
ENTRYPOINT的shell格式
+CMD的Exec格式
# Dockerfile
FROM centos
ENTRYPOINT /bin/echo "Hello"
CMD ["Word"]
# 啟動容器的命令: docker run -it [image]
# 輸出: Hello
# 啟動容器的命令: docker run -it [image] Test
# 輸出: Hello
參考連結
https://blog.csdn.net/weixin_42971363/article/details/91506844
原文出處:https://gitbook.curiouser.top/origin/docker-Dockerfile%E4%B8%ADCMD%E4%B8%8EENTRYPOINT%E5%91%BD%E4%BB%A4%E7%9A%84%E5%8C%BA%E5%88%AB.html