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

$ docker run -d -p 8080:80 nginx

ポート80で待ち受けるWebサーバのイメージ nginx から、上のコマンドでコンテナを起動した。ホストのIPアドレスを 192.0.2.10 とし、ファイアウォールなどの制限はないものとする。同じネットワークにある別のPCのブラウザから、このWebサーバに接続するURLとして、正しいものはどれか。

  1. Ahttp://192.0.2.10:80/
  2. Bhttp://(コンテナのIPアドレス):8080/
  3. Chttp://192.0.2.10:8080/
答えと解説を見る

正解:C. http://192.0.2.10:8080/

-p ホストのポート:コンテナのポート の形で書くので、-p 8080:80 は、ホストのポート8080に届いた通信を、コンテナのポート80に転送する指定です。別のPCからは、ホストのIPアドレスのポート8080に接続します。コンテナのIPアドレスは、一般にホストの中の仮想的なネットワークのもので、外のPCからは直接届きません。Dockerfileの EXPOSE 80 は、コンテナが使うポートを示す記録で、それだけではホストのポートは公開されないので、-p の指定が必要です。

  • A. ホストのポート80には何も割り当てられていません。80はコンテナの側のポートです。
  • B. コンテナのIPアドレスは、ホストの中の仮想的なネットワークのもので、一般に外のPCからは届きません。また、コンテナが待ち受けるのは8080ではなく80です。
  • C. 正しい。前がホストのポート、後ろがコンテナのポートです。
この分野を解く 分野ページへ

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

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

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

  1. 上の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 より短くなる時間として、正しいものはどれか。
  2. Dockerで、コンテナが書いたデータを残すための名前付きボリュームとバインドマウントの説明として、正しいものはどれか。
  3. イメージを registry.example.com/team/web:1.4 と指定して取得(pull)する。この指定の各部分の意味の組み合わせとして、正しいものはどれか。
  4. scratch は、ファイルを何も含まない空のイメージである。上のマルチステージビルドのDockerfileで作った最終のイメージに含まれるものとして、正しいものはどれか。
  5. Kubernetesで、デプロイして管理する最小の単位であり、1つ以上のコンテナをまとめて、同じIPアドレスやボリュームを共有させるものはどれか。