1921 votes

Comment obtenir l'adresse IP d'un conteneur Docker à partir de l'hôte ?

Y a-t-il une commande que je peux exécuter pour obtenir l'adresse IP du conteneur directement de l'hôte après la création d'un nouveau conteneur ?

Fondamentalement, une fois que Docker crée le conteneur, je veux rouler mon propre déploiement de code et la configuration du conteneur scripts.

50 votes

Je voulais juste m'assurer que d'autres novices ne feraient pas la même erreur et n'essaieraient pas d'obtenir l'adresse IP à partir de l'image au lieu du conteneur. Assurez-vous d'obtenir le CID ou l'ID du conteneur et de l'interroger ; le CID via 'docker ps'.

3207voto

WouterD Points 1041

En --format option de inspect vient à la rescousse.

La syntaxe du client Docker moderne est :

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

L'ancienne syntaxe du client Docker est :

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

Ces commandes renvoient l'adresse IP du conteneur Docker.

Comme mentionné dans les commentaires : si vous êtes sous Windows, utilisez des guillemets doubles. " au lieu de guillemets simples ' autour des accolades.

47 votes

C'est une bien, bien meilleure solution. Ne demandez que ce dont vous avez besoin, si possible !

14 votes

Hmm. Obtenir un <no value> réponse sur un Mac en utilisant Fig/Boot2Docker

1 votes

@cevaris Vérifiez que vous utilisez le bon code d'identification ou le bon nom. inspect correspondra aux premières images qui n'auront évidemment pas d'IP !

566voto

creack Points 11635

Vous pouvez utiliser docker inspect <container id> .

Par exemple :

CID=$(docker run -d -p 4321 base nc -lk 4321);
docker inspect $CID

69 votes

Afin d'extraire l'ip, vous pouvez faire quelque chose comme docker inspect $CID | grep IPAddress | cut -d '"' -f 4 il fonctionne bien :)

12 votes

Pour résumer, cet alias shell devrait lister tous les identifiants de conteneurs et leurs adresses IP : alias dockerip='docker ps | tail -n +2 | while read cid b; do echo -n "$cid\t"; docker inspect $cid | grep IPAddress | cut -d \" -f 4; done'

66 votes

Comme mentionné par @user3119830, il existe une nouvelle option d'inspection. Maintenant, vous pouvez obtenir l'Ip plus facilement avec docker inspect -format '{{ .NetworkSettings.IPAddress }}' ${CID}

535voto

Krunal Points 5398

Obtenez d'abord l'ID du conteneur :

docker ps

(La première colonne est pour l'ID du conteneur)

Utilisez l'ID du conteneur à exécuter :

docker inspect <container ID>

En bas, sous NetworkSettings vous pouvez trouver Adresse IPAddress

Ou simplement pour les systèmes basés sur UNIX :

docker inspect <container id> | grep "IPAddress"

Et pour Windows CMD :

docker inspect <container id> | findstr "IPAddress"

263voto

sony vizio Points 2724
docker inspect CONTAINER_ID | grep "IPAddress"

Vous pouvez ajouter -i à grep pour ignorer le cas, alors même ce qui suit fonctionnera :

docker inspect CONTAINER_ID | grep -i "IPaDDreSS"

189voto

Hemerson Varela Points 1890

Pour obtenir tous les noms de conteneurs et leurs adresses IP en une seule commande.

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

Si vous utilisez docker-compose la commande sera la suivante :

docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

La sortie sera :

/containerA - 172.17.0.4
/containerB - 172.17.0.3
/containerC - 172.17.0.2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X