ENTRYPOINT和CMD都是Dockerfile中用來指定容器啟動時要執行的命令的指令,它們的區別如下:
CMD指定容器啟動時要執行的命令,可以有多個CMD指令,但只有最后一個CMD指令會生效。CMD指令可以被docker run命令的參數覆蓋。
ENTRYPOINT也指定容器啟動時要執行的命令,但只能有一個ENTRYPOINT指令,多個ENTRYPOINT指令會被覆蓋。ENTRYPOINT指令不會被docker run命令的參數覆蓋,而是將docker run命令的參數作為ENTRYPOINT指令的參數傳遞進去。
簡而言之,CMD用于定義默認的命令和參數,可以被docker run命令的參數覆蓋,而ENTRYPOINT用于定義容器的主要命令,不會被docker run命令的參數覆蓋。