ENTRYPOINT 和 CMD 都是 Dockerfile 中的指令,用于指定容器啟動時要執行的命令。
區別如下:
ENTRYPOINT 用于指定容器啟動時要執行的命令或程序。它的參數會被保留下來,并且可以通過 CMD 或者 docker run 命令的參數來覆蓋。
CMD 用于指定容器啟動時要執行的命令或程序的默認參數。它的參數可以被 docker run 命令的參數覆蓋,如果在 Dockerfile 中有多個 CMD 指令,則只有最后一個 CMD 指令生效。
總結:
ENTRYPOINT 是容器的入口點,定義容器啟動時要執行的命令或程序,一般用于指定應用程序或服務的啟動命令。
CMD 是容器啟動時要執行的命令或程序的默認參數,用于定義容器運行時的默認行為。
通常情況下,ENTRYPOINT 和 CMD 可以結合使用,ENTRYPOINT 用于指定啟動命令,CMD 用于指定默認參數。這樣可以在運行容器時,可以通過傳入參數來覆蓋CMD指定的默認參數,從而達到靈活配置容器的目的。