LinuCレベル2 コンテナ 問9
コンテナ/Dockerコンテナとコンテナイメージの管理docker runでnginxのコンテナを起動する際、ホストの8080番ポートへの接続をコンテナの80番ポートへ転送する指定として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「コンテナ」に対応。実際の試験問題ではありません)
- Adocker run -p 80:8080 nginx
- Bdocker run --expose 8080:80 nginx
- Cdocker run -p 8080:80 nginx
- Ddocker run --link 8080:80 nginx
正解:C
解説
docker runの-p(--publish)オプションは「ホスト側ポート:コンテナ側ポート」の順で指定し、ホストのポートへの接続をコンテナのポートへ転送(ポート変換)します。-p 8080:80 とすれば、ホストの8080番ポートへの接続がコンテナの80番ポートに届きます。-p 127.0.0.1:8080:80 のようにホスト側のIPアドレスを指定して、待ち受けを限定することもできます。設定されたポートの対応は docker ps の出力や docker port コマンドで確認できます。
選択肢ごとの解説
- A誤り。順序が逆で、これはホストの80番ポートをコンテナの8080番ポートへ転送する指定になります。
- B誤り。--exposeはコンテナが使うポートを宣言するだけで、ホストのポートとの対応付け(公開)は行いません。
- C正しい。-p ホスト側ポート:コンテナ側ポート の順で指定します。
- D誤り。--linkはコンテナ同士を名前で接続する旧来の機能で、ポートの転送を指定するものではありません。