12.7. ポートマッピングによるコンテナー間の通信
2 つのコンテナー間で通信する最も便利な方法は、公開ポートを使用することです。ポートの公開は、自動と手動の 2 つの方法で行うことができます。
前提条件
-
container-toolsメタパッケージがインストールされている。
手順
未公開のコンテナーを実行します。
# podman run -dt --name=web1 ubi9/httpd-24自動的に公開されたコンテナーを実行します。
# podman run -dt --name=web2 -P ubi9/httpd-24手動で公開したコンテナーを実行し、コンテナーポート 8080 を公開します。
# podman run -dt --name=web3 -p 8888:8080 ubi9/httpd-24すべてのコンテナーをリスト表示します。
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db23e8dabc74 registry.access.redhat.com/ubi9/httpd-24:latest /usr/bin/run-http... 23 seconds ago Up 23 seconds 8080/tcp, 8443/tcp web1 1824b8f0a64b registry.access.redhat.com/ubi9/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/ubi9/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は、ポート 43595 と 42423 を自動的にマッピングして、それぞれアプリケーションポート 8080 と 8443 を公開します。注記registry.access.redhat.com/9/httpd-24イメージの 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コンテナーに到達します。# 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> ...