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 プラットフォームスペシャリストの出題範囲「コンテナ技術の利用」に対応。実際の試験問題ではありません)
- Aping -c 3 localhost example.com
- Bping -c 3 example.com
- Cexample.com
- Dping -c 3 localhost
正解: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は使われません。