過去問ドリル

LinuCレベル3 プラットフォームスペシャリスト コンテナ技術の利用 問11

コンテナ技術の利用/コンテナの操作と管理

次のDockerfileからイメージmyimgをビルドし、「docker run myimg example.com」を実行した。コンテナ内で実行されるコマンドとして適切なものはどれか。 FROM debian:12 RUN apt-get update && apt-get install -y iputils-ping ENTRYPOINT ["ping", "-c", "3"] CMD ["localhost"]

当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「コンテナ技術の利用」に対応。実際の試験問題ではありません)

正解:B

解説

ENTRYPOINTとCMDを両方exec形式で書くと、ENTRYPOINTが実行するコマンド本体、CMDがその既定の引数になります。docker runでイメージ名の後に引数を与えると、その引数がCMDを置き換えてENTRYPOINTに渡されます。そのため、この例では「ping -c 3 example.com」が実行されます。引数を与えなければCMDが使われ「ping -c 3 localhost」になります。ENTRYPOINT自体を差し替えたい場合は、docker runの --entrypoint オプションを使います。

選択肢ごとの解説

  • A誤り。docker runの引数はCMDに追加されるのではなく、CMDを置き換えます。localhostは渡されません。
  • B正しい。引数example.comがCMDを置き換え、ENTRYPOINTの後ろに渡されます。
  • C誤り。docker runの引数で置き換わるのはCMDで、ENTRYPOINTはそのまま残ります。ENTRYPOINTを変えるには --entrypoint が必要です。
  • D誤り。これは引数を何も与えずに実行した場合の動作です。引数を与えるとCMDは使われません。
LinuCレベル3 プラットフォームスペシャリストの問題を演習モードで解く