11.5. 포트 매핑을 사용하여 컨테이너 간 통신
두 컨테이너 간에 통신하는 가장 편리한 방법은 게시된 포트를 사용하는 것입니다. 포트는 자동 또는 수동이라는 두 가지 방법으로 게시할 수 있습니다.
사전 요구 사항
-
container-tools
모듈이 설치되어 있습니다.
절차
게시되지 않은 컨테이너를 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman run -dt --name=web1 ubi8/httpd-24
# podman run -dt --name=web1 ubi8/httpd-24
자동으로 게시된 컨테이너를 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman run -dt --name=web2 -P ubi8/httpd-24
# podman run -dt --name=web2 -P ubi8/httpd-24
수동으로 게시된 컨테이너를 실행하고 컨테이너 포트 80을 게시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman run -dt --name=web3 -p 8888:8080 ubi8/httpd-24
# podman run -dt --name=web3 -p 8888:8080 ubi8/httpd-24
모든 컨테이너를 나열합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman ps
# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db23e8dabc74 registry.access.redhat.com/ubi8/httpd-24:latest /usr/bin/run-http... 23 seconds ago Up 23 seconds 8080/tcp, 8443/tcp web1 1824b8f0a64b registry.access.redhat.com/ubi8/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/ubi8/httpd-24:latest /usr/bin/run-http... 5 seconds ago Up 5 seconds 0.0.0.0:8888->8080/tcp, 8443/tcp web3
다음을 확인할 수 있습니다.
-
컨테이너
웹1
에는 게시된 포트가 없으며 컨테이너 네트워크 또는 브리지에서만 연결할 수 있습니다. 컨테이너
웹2
는 각각 애플리케이션 포트 8080 및 8443을 게시하도록 포트 43595 및 42423을 자동으로 매핑했습니다.참고Containerfile 에
registry.access.redhat.com/8/httpd-24
이미지에EXPOSE 8080
및EXPOSE 8443
명령이 있기 때문에 자동 포트 매핑이 가능합니다.-
컨테이너
웹3
에는 수동으로 게시된 포트가 있습니다. 호스트 포트 8888은 컨테이너 포트 8080에 매핑됩니다.
-
컨테이너
web1
및web3
컨테이너의 IP 주소를 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman inspect --format='{{.NetworkSettings.IPAddress}}' web1 podman inspect --format='{{.NetworkSettings.IPAddress}}' web3
# podman inspect --format='{{.NetworkSettings.IPAddress}}' web1 # podman inspect --format='{{.NetworkSettings.IPAddress}}' web3
<IP>:<port> 표기법을 사용하여
web1
컨테이너에 연결합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 10.88.0.2:8080
# 10.88.0.2:8080 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...
localhost:<port> 표기법을 사용하여
web2
컨테이너에 연결합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl localhost:43595
# curl localhost:43595 ... <title>Test Page for the HTTP Server on Red Hat Enterprise Linux</title> ...
<IP>:<port> 표기법을 사용하여
web3
컨테이너에 도달합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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> ...