11.5. ポートマッピングによるコンテナー間の通信
2 つのコンテナー間で通信する最も便利な方法は、公開ポートを使用することです。ポートの公開は、自動と手動の 2 つの方法で行うことができます。
前提条件
-
container-tools
モジュールがインストールされている。
手順
未公開のコンテナーを実行します。
# podman run -dt --name=web1 ubi8/httpd-24
自動的に公開されたコンテナーを実行します。
# podman run -dt --name=web2 -P ubi8/httpd-24
手動で公開したコンテナーを実行し、コンテナーポート 80 を公開します。
# podman run -dt --name=web3 -p 9090:80 ubi8/httpd-24
すべてのコンテナーをリスト表示します。
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f12fa79b8b39 registry.access.redhat.com/ubi8/httpd-24:latest /usr/bin/run-http... 23 seconds ago Up 24 seconds ago web1 9024d9e815e2 registry.access.redhat.com/ubi8/httpd-24:latest /usr/bin/run-http... 13 seconds ago Up 13 seconds ago 0.0.0.0:43595->8080/tcp, 0.0.0.0:42423->8443/tcp web2 03bc2a019f1b registry.access.redhat.com/ubi8/httpd-24:latest /usr/bin/run-http... 2 seconds ago Up 2 seconds ago 0.0.0.0:9090->80/tcp web3
以下が確認できます。
-
コンテナー
web1
には公開ポートがなく、コンテナーネットワークまたはブリッジにでのみアクセスできます。 コンテナー
web2
は、ポート 43595 と 42423 を自動的にマッピングして、それぞれアプリケーションポート 8080 と 8443 を公開します。注記registry.access.redhat.com/8/httpd-24
イメージの Containerfile にEXPOSE 8080
とEXPOSE 8443
コマンドがあるため、自動ポートマッピングが可能です。-
コンテナー
web3
は手動でポートを公開しています。ホストポート 9090 は、コンテナーポート 80 にマッピングされます。
-
コンテナー
web1
、web3
コンテナーの IP アドレスを表示します。# podman inspect --format='{{.NetworkSettings.IPAddress}}' web1 # podman inspect --format='{{.NetworkSettings.IPAddress}}' web3
<IP>:<port> 表記を使用して
web1
コンテナーに到達します。# curl 10.88.0.14: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.14:9090 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...