Docker 컨테이너의 IP 주소 가져오기
이 자습서는 Docker 컨테이너 IP 주소의 IP 주소를 가져오는 방법을 보여줍니다.
브리지 네트워크에 연결하고 Docker 컨테이너의 IP 주소 가져오기
도커 컨테이너가 편리한 중요한 이유 중 하나는 쉽게 연결할 수 있기 때문입니다. 이를 통해 컨테이너는 통신하고 리소스를 쉽게 공유할 수 있습니다.
컨테이너를 도커 작업 부하 없이 연결할 수도 있습니다.
이 기사는 도커 네트워킹에 관한 것이 아닙니다. 따라서 우리는 도커 네트워킹의 세부 사항을 탐구하지 않을 것입니다. 그러나 docker는 브리지 드라이버를 사용하여 네트워킹을 플러그 가능하게 만드는 다양한 드라이버를 제공합니다.
Docker를 사용하면 브리지 드라이버라고 하는 기본 드라이버를 사용하여 네트워크를 만들 수 있습니다. 그러나 브리지 네트워크는 호스트의 컨테이너로 제한된 범위로 비공개입니다.
호스트와 이전에 가지고 있는 기본 네트워크를 볼 수 있습니다. 모든 도커 설치에는 일반적으로 아래에 표시된 세 가지 기본 네트워크가 포함됩니다.
isaac@DESKTOP-HV44HT6:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
9729860fa596 bridge bridge local
0667c3f7d0f0 host host local
c3273b158256 none null local
Docker는 달리 지정하지 않는 한 브리지 네트워크에서 항상 새 컨테이너를 시작합니다.
컨테이너 IP 주소는 네트워킹 도커 컨테이너의 필수적인 부분입니다. 일반적으로 컨테이너에는 연결하는 모든 네트워크에 대한 IP 주소가 할당됩니다.
반면에 아래 명령을 사용하여 수동으로 도커 컨테이너를 브리지 네트워크에 연결할 수도 있습니다.
$ docker run -dt rabbitmq
그러면 도커 컨테이너가 생성되어 브리지 네트워크에 할당됩니다. 네트워크를 검사하여 연결되어 있는지 확인하기 전에 먼저 컨테이너가 실행 중인지 확인해야 합니다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
42487cad0390 rabbitmq "docker-entrypoint.s…" About a minute ago Up About a minute 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp compassionate_keller
브리지 네트워크를 검사하면 컨테이너의 IP 주소 및 컨테이너의 기본 서브넷과 같은 다른 세부 정보 중에서 네트워크에 연결된 컨테이너를 볼 수 있습니다. 세부 정보는 아래와 같이 JSON 형식으로 반환됩니다.
~$ docker network inspect bridge
출력:
"ConfigOnly": false,
"Containers": {
"42487cad0390a8de6d1a88bc1d6c09ffdf3162dc85d4d5d3dc70200b2348b673": {
"Name": "compassionate_keller",
"EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
}
위의 예에서 컨테이너의 IP 주소는 172.17.0.4/16입니다.
또한 네트워크에 연결된 여러 컨테이너를 가질 수 있으며 브리지 네트워크를 검사하여 두 컨테이너의 IP 주소를 쉽게 찾을 수 있습니다. 아래와 같이 Nginx 이미지 기반의 컨테이너를 브리지 네트워크에 추가합니다.
isaac@DESKTOP-HV44HT6:~$ docker run -dt nginx
4ab752ab92582a0eb2cb14475094460fc8cc608c93a357a8dca082cfea2bc368
이제 브리지 네트워크를 검사하면 두 컨테이너의 IP 주소를 얻을 수 있습니다. 두 개의 컨테이너가 실행 중이어야 함을 기억하십시오.
isaac@DESKTOP-HV44HT6:~$ docker network inspect bridge
출력:
"Containers": {
"42487cad0390a8de6d1a88bc1d6c09ffdf3162dc85d4d5d3dc70200b2348b673": {
"Name": "compassionate_keller",
"EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
},
"4ab752ab92582a0eb2cb14475094460fc8cc608c93a357a8dca082cfea2bc368": {
"Name": "trusting_keller",
"EndpointID": "a2babd11586f493cf5e57f5d9920a7f5648cf6163e77030521bef62fc9f34a63",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
}
두 컨테이너의 IP 주소는 생성 순서대로 172.17.0.4/16
및 172.17.0.2/16
입니다.
docker inspect
를 사용하여 Docker 컨테이너의 IP 주소 가져오기
docker inspect
와 컨테이너 이름 또는 컨테이너 ID를 사용하여 특정 Docker 컨테이너의 IP 주소를 찾을 수도 있습니다. 이렇게 하면 JSON 형식의 다른 많은 세부 정보도 똑같이 반환됩니다.
$ docker inspect 42487cad0390
출력:
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "9729860fa5961eeac55f921ee787b2c82a15146cd36117b5394243be2149e929",
"EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.4",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:04",
"DriverOpts": null
}
}
이 경우에는 공식 Nginx 이미지를 기반으로 컨테이너를 검사했습니다. 네트워킹 Docker 컨테이너에 대한 재미있는 내용은 Docker 설명서를 참조할 수 있습니다.
Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.
LinkedIn