11.7. ポートマッピングによるコンテナー間の通信
2 つのコンテナー間で通信する最も便利な方法は、公開ポートを使用することです。ポートの公開は、自動と手動の 2 つの方法で行うことができます。
前提条件
-
container-tools
メタパッケージがインストールされている。
手順
未公開のコンテナーを実行します。
podman run -dt --name=web1 ubi9/httpd-24
# podman run -dt --name=web1 ubi9/httpd-24
Copy to Clipboard Copied! 自動的に公開されたコンテナーを実行します。
podman run -dt --name=web2 -P ubi9/httpd-24
# podman run -dt --name=web2 -P ubi9/httpd-24
Copy to Clipboard Copied! 手動で公開したコンテナーを実行し、コンテナーポート 80 を公開します。
podman run -dt --name=web3 -p 8888:8080 ubi9/httpd-24
# podman run -dt --name=web3 -p 8888:8080 ubi9/httpd-24
Copy to Clipboard Copied! すべてのコンテナーをリスト表示します。
podman ps
# 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
Copy to Clipboard Copied! 以下が確認できます。
-
コンテナー
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
# podman inspect --format='{{.NetworkSettings.IPAddress}}' web1 # podman inspect --format='{{.NetworkSettings.IPAddress}}' web3
Copy to Clipboard Copied! <IP>:<port> 表記を使用して
web1
コンテナーに到達します。10.88.0.2:8080
# 10.88.0.2:8080 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...
Copy to Clipboard Copied! localhost:<port> 表記を使用して
web2
コンテナーに到達します。curl localhost:43595
# curl localhost:43595 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...
Copy to Clipboard Copied! <IP>:<port> 表記を使用して
web3
コンテナーに到達します:curl 10.88.0.4:8080
# curl 10.88.0.4:8080 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...
Copy to Clipboard Copied!