
x개의 컨테이너를 실행하는 도커가 있다고 가정해 보겠습니다. 모든 컨테이너 IP 주소 목록을 어떻게든 얻을 수 있나요?
어떻게든 이것을 스크립트로 만들고 싶습니다.
docker ps -a
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
614497a23ca7 mongo "/entrypoint.sh mongo" 7 minutes ago Up 7 minutes 27017/tcp some-mongo
Docker API를 살펴보았는데 실제로 제가 원하는 내용이 없는 것 같습니다. 예를 들어 다음과 같이 반환하고 싶습니다.
172.17.0.2
... other ips addresses
나는 docker inspect
존재한다는 것을 알고 있으며 데이터를 파이프하고 필드를 추출할 수 있지만 IPAddress
이는 단일 컨테이너에 대한 것입니다. 모든 컨테이너 IP 주소를 알고 싶습니다. 이것이 가능한가?
답변1
IP 주소로 Docker 컨테이너를 찾으려면 다음과 같이 컨테이너 ID와 해당 IP 주소를 나열할 수 있습니다.
for container in `docker ps -q`; do ips=`docker inspect $container | grep -i ipaddress | grep -v null | grep -v \"\" | cut -d ':' -f 2`; echo $container$ips; done
다음과 같은 작업을 수행할 수도 있습니다(컨테이너 ID 대신 컨테이너 이름을 인쇄함).
docker ps -q | xargs docker inspect --format "{{range .NetworkSettings.Networks}}{{print .IPAddress}} {{end}}{{.Name}}"
답변2
아래는 어떻습니까?
for i in `docker ps -q`; do echo $i; echo " : "; docker inspect $i | grep -i ipaddress | grep -v null | cut -d ':' -f 2; done