クラウドとコンテナの基礎

FROM alpine
ENTRYPOINT ["ping", "-c", "3"]
CMD ["localhost"]

上のDockerfileから作ったイメージ pinger を、docker run pinger example.com として起動した。コンテナの中で実行されるコマンドとして、正しいものはどれか。

  1. Aping -c 3 localhost
  2. Bping -c 3 example.com
  3. Cexample.com(コマンドとして実行しようとしてエラーになる)
答えと解説を見る

正解:B. ping -c 3 example.com

exec形式(JSONの配列)で書いた ENTRYPOINT は、コンテナで必ず実行するコマンドで、CMD はその既定の引数になります。docker run でイメージ名の後ろに書いた引数は CMD を置き換え、ENTRYPOINT の後ろに付け加えられるので、ping -c 3 example.com が実行されます。引数を付けずに docker run pinger とすれば、CMD の localhost が使われて ping -c 3 localhost になります。ENTRYPOINT そのものを変えたいときは、docker run の --entrypoint オプションを使います。

  • A. 引数を付けずに起動した場合の動作です。docker run の引数は CMD を置き換えます。
  • B. 正しい。引数の example.com が CMD の localhost に置き換わり、ENTRYPOINT の後ろに付きます。
  • C. ENTRYPOINT がなく CMD だけのイメージなら、引数がコマンド全体を置き換えてこうなります。ここでは ENTRYPOINT があるので、引数として渡されます。
この分野を解く 分野ページへ

クラウドとコンテナの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

クラウドとコンテナの基礎のほかの問題

  1. ポート80で待ち受けるWebサーバのイメージ nginx から、上のコマンドでコンテナを起動した。ホストのIPアドレスを 192.0.2.10 とし、ファイアウォールなどの制限はないものとする。同じネットワークにある別のPCのブラウザから、このWebサーバに接続するURLとして、正しいものはどれか。
  2. 上のDockerfile(B)は、COPY . . の後に RUN npm ci を置いていたDockerfile(A)を、依存関係のファイルだけを先にコピーする順序に変えたものである。npm ci には120秒、npm run build には30秒、COPY . . には2秒かかり、ほかの命令の時間は無視できるものとする。1日に20回、src の下のソースコードだけを変えて(package.json と package-lock.json は変えずに)イメージを作り直す。前回のビルドのキャッシュが使えるとき、1日のビルド時間の合計で、B が A より短くなる時間として、正しいものはどれか。
  3. Dockerで、コンテナが書いたデータを残すための名前付きボリュームとバインドマウントの説明として、正しいものはどれか。
  4. イメージを registry.example.com/team/web:1.4 と指定して取得(pull)する。この指定の各部分の意味の組み合わせとして、正しいものはどれか。
  5. scratch は、ファイルを何も含まない空のイメージである。上のマルチステージビルドのDockerfileで作った最終のイメージに含まれるものとして、正しいものはどれか。