インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(Dockerfile)CMDとENTRYPOINTの一番の違いは上書きできるか否か

コンテナで実行するコマンドを決める構文

DockerfileではCMDとENTRYPOINTがあり、構文が微妙に違うけどそもそも何が違うの?という話を整理しました。

まずポイントとして1つのDockerfileにCMDとENTRYPOINTは1度のみ。CMDとENTRYPOINTの併用はOK。
要はCMDを二行書いたら実行されるのは二行目という感じ。

で、一番の違いですが「コンテナ実行時に上書きができるか否か」というのが大きなポイント。
ENTRYPOINTで指定されているコマンドは上書きができない。逆にCMDならできる。

なので、併用が活きてきます。要はEntrypointでコマンドを書いてCMDに引数を書いておくという戦法。なるほどね~