DockerfileのENTRYPOINTとCMDの違いについて正しいものは?
解説
正解は「ENTRYPOINTはコンテナ実行時に常に実行されるコマンド、CMDはデフォルト引数でdocker run時に上書き可能」です。ENTRYPOINTで指定したコマンドはdocker run時に引数を渡しても置き換わらず、CMDの値がデフォルト引数として使われます。例えばENTRYPOINT ["node"] CMD ["app.js"]と記述した場合、docker runの引数なしではnode app.jsが実行され、docker run myimage server.jsとするとnode server.jsが実行されます。両者を組み合わせることで柔軟なコンテナ設計が可能です。docker run --entrypointで上書きもできます。