11.7. 포트 매핑을 사용하여 컨테이너 간 통신
두 컨테이너 간에 통신하는 가장 편리한 방법은 게시된 포트를 사용하는 것입니다. 포트는 자동 또는 수동이라는 두 가지 방법으로 게시할 수 있습니다.
사전 요구 사항
-
container-tools
meta-package가 설치되어 있습니다.
절차
게시되지 않은 컨테이너를 실행합니다.
# podman run -dt --name=web1 ubi9/httpd-24
자동으로 게시된 컨테이너를 실행합니다.
# podman run -dt --name=web2 -P ubi9/httpd-24
수동으로 게시된 컨테이너를 실행하고 컨테이너 포트 80을 게시합니다.
# podman run -dt --name=web3 -p 9090:80 ubi9/httpd-24
모든 컨테이너를 나열합니다.
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f12fa79b8b39 registry.access.redhat.com/ubi9/httpd-24:latest /usr/bin/run-http... 23 seconds ago Up 24 seconds ago web1 9024d9e815e2 registry.access.redhat.com/ubi9/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/ubi9/httpd-24:latest /usr/bin/run-http... 2 seconds ago Up 2 seconds ago 0.0.0.0:9090->80/tcp web3
다음을 확인할 수 있습니다.
-
컨테이너
웹1
에는 게시된 포트가 없으며 컨테이너 네트워크 또는 브리지에서만 연결할 수 있습니다. 컨테이너
웹2
는 각각 애플리케이션 포트 8080 및 8443을 게시하도록 포트 43595 및 42423을 자동으로 매핑했습니다.참고Containerfile 에
registry.access.redhat.com/httpd-24
이미지에EXPOSE 8080
및EXPOSE 8443
명령이 있기 때문에 자동 포트 매핑이 가능합니다.-
컨테이너
웹3
에는 수동으로 게시된 포트가 있습니다. 호스트 포트 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> ...