11.7. ポートマッピングを使用したコンテナー間の通信
分離されたサービスと外部クライアント間の通信を有効化するには、ネットワークポートを Red Hat Enterprise Linux コンテナーにマッピングします。ポートマッピングを設定することで、特定のコンテナー化されたアプリケーションをセキュアに公開し、環境への受信トラフィックの流れを正確に制御できます。
前提条件
-
container-toolsメタパッケージがインストールされている。
手順
未公開のコンテナーを実行します。
# podman run -dt --name=web1 ubi10/httpd-24自動的に公開されたコンテナーを実行します。
# podman run -dt --name=web2 -P ubi10/httpd-24手動で公開したコンテナーを実行し、コンテナーポート 8080 を公開します。
# podman run -dt --name=web3 -p 8888:8080 ubi10/httpd-24すべてのコンテナーをリスト表示します。
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db23e8dabc74 registry.access.redhat.com/ubi10/httpd-24:latest /usr/bin/run-http... 23 seconds ago Up 23 seconds 8080/tcp, 8443/tcp web1 1824b8f0a64b registry.access.redhat.com/ubi10/httpd-24:latest /usr/bin/run-http... 18 seconds ago Up 18 seconds 0.0.0.0:33127->8080/tcp, 0.0.0.0:37679->8443/tcp web2 39de784d917a registry.access.redhat.com/ubi10/httpd-24:latest /usr/bin/run-http... 5 seconds ago Up 5 seconds 0.0.0.0:8888->8080/tcp, 8443/tcp web3以下が確認できます。
-
コンテナー
web1には公開ポートがなく、コンテナーネットワークまたはブリッジにでのみアクセスできます。 コンテナー
web2は、ポート 33127 と 37679 を自動的にマッピングして、それぞれアプリケーションポート 8080 と 8443 を公開します。registry.access.redhat.com/ubi10/httpd-24:latestイメージの Containerfile にEXPOSE 8080とEXPOSE 8443コマンドがあるため、自動ポートマッピングが可能です。-
コンテナー
web3は手動でポートを公開しています。ホストポート 8888 はコンテナーポート 8080 にマッピングされています。
-
コンテナー
web1、web3コンテナーの IP アドレスを表示します。# podman inspect --format='{{.NetworkSettings.IPAddress}}' web1 # podman inspect --format='{{.NetworkSettings.IPAddress}}' web3<IP>:<port> 表記を使用して
web1コンテナーに到達します。# curl 10.88.0.2:8080 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...localhost:<port> 表記を使用して
web2コンテナーに到達します。# curl localhost:43595 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...<IP>:<port> 表記を使用して
web3コンテナーに到達します:# curl 10.88.0.4:8080 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...