クラウドとコンテナの基礎
$ docker run -d -p 8080:80 nginxポート80で待ち受けるWebサーバのイメージ nginx から、上のコマンドでコンテナを起動した。ホストのIPアドレスを 192.0.2.10 とし、ファイアウォールなどの制限はないものとする。同じネットワークにある別のPCのブラウザから、このWebサーバに接続するURLとして、正しいものはどれか。
- Ahttp://192.0.2.10:80/
- Bhttp://(コンテナのIPアドレス):8080/
- 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. 正しい。前がホストのポート、後ろがコンテナのポートです。