
Angenommen, ich habe Docker, auf dem x Container laufen. Ist es möglich, irgendwie eine Liste aller IP-Adressen der Container zu erhalten?
Ich möchte dies irgendwie in ein Skript einbauen.
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
Ich habe mir die Docker-API angesehen und sie scheint nicht wirklich das zu bieten, wonach ich suche. Ich möchte beispielsweise Folgendes zurückgeben:
172.17.0.2
... other ips addresses
Ich weiß docker inspect
, dass es existiert, und ich könnte die Daten weiterleiten und das IPAddress
Feld extrahieren, aber das gilt für einen einzelnen Container. Ich hätte gerne die IP-Adressen aller Container. Ist das möglich?
Antwort1
Wenn Sie versuchen möchten, einen Docker-Container anhand seiner IP-Adresse zu finden, können Sie die Container-IDs und ihre IP-Adressen wie folgt auflisten:
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
Sie können auch Folgendes tun (dadurch werden Containernamen statt Container-IDs ausgedruckt):
docker ps -q | xargs docker inspect --format "{{range .NetworkSettings.Networks}}{{print .IPAddress}} {{end}}{{.Name}}"
Antwort2
Wie wäre es mit dem Folgenden?
for i in `docker ps -q`; do echo $i; echo " : "; docker inspect $i | grep -i ipaddress | grep -v null | cut -d ':' -f 2; done