CMD
指定容器默認執行的命令
# exec 形式,推薦
CMD ["executable","param1","param2"]
CMD ["可執行命令", "參數1", "參數2"...]
# 作爲ENTRYPOINT的默認參數
CMD ["param1","param2"]
# shell
CMD 命令 param1 param2
重點
- 一個 Dockerfile 只有一個 CMD 指令,若有多個,只有最後一個 CMD 指令生效
- CMD 主要目的:爲容器提供默認執行的命令,這個默認值可以包含可執行文件
- 也可以不包含可執行文件,意味着必須指定 ENTRYPOINT 指令(第二種寫法)
exec 模式下使用環境變量
# 錯誤寫法,不會使用 HOME 環境變量
CMD [ "echo", "$HOME" ]
# 正確寫法,需要將 echo 和使用環境變量放一起
CMD [ "sh", "-c", "echo $HOME" ]
RUN 和 CMD
- RUN 可以在構建階段運行很多個命令,而且每運行一個命令都會單獨提交結果
- CMD 在構建階段不執行任何操作,而是指定鏡像默認執行的命令