web-dev-qa-db-fra.com

Comment obtenir l'adresse IP du conteneur docker en cours d'exécution

J'utilise Docker pour Mac. J'exécute un microservice basé sur nodejs dans un conteneur Docker. Je veux tester le microservice de noeud via le navigateur. Comment obtenir l'adresse IP du conteneur docker en cours d'exécution?

65
user3067875

Si vous ne souhaitez pas mapper les ports de votre hôte sur le conteneur, vous pouvez accéder directement à la plage de dockers ip du conteneur. Cette plage est accessible par défaut uniquement à partir de votre hôte. Vous pouvez vérifier les données de votre réseau de conteneurs en effectuant les actions suivantes:

docker inspect <containerNameOrId>

Il est probablement préférable de filtrer:

docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1

Habituellement, la plage d'ip du docker par défaut est 172.17.0.0/16. Votre hôte doit être 172.17.0.1 et votre premier conteneur doit être 172.17.0.2 si tout est normal et que vous n'avez spécifié aucune option réseau particulière.

EDIT Une autre façon plus élégante d'utiliser les fonctions de menu fixe au lieu de "tromper bash":

docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
77
OscarAkaElvis

Utilisez l’option --format pour obtenir uniquement l’adresse IP à la place des informations complètes sur le conteneur:

Sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
12
Nilesh Patel

si vous voulez l'obtenir directement dans le conteneur, vous pouvez essayer

ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
8
Ilya Yevlampiev

Pour les moteurs de docker modernes, utilisez cette commande:

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

et pour les moteurs plus anciens, utilisez:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
7
Nima Ghoroubi

Vous pouvez démarrer votre conteneur avec l'indicateur -P. Ceci "attribue" un port aléatoire au port exposé de votre image.

Avec docker port <container id>, vous pouvez voir le port choisi de manière aléatoire. L'accès est alors possible via localhost:port.

5
gScht

Pour mon cas, ci-dessous a travaillé sur Mac :

Je ne pouvais pas accéder directement aux adresses IP de conteneur sur Mac. Je dois utiliser localhost avec la redirection de port, par exemple. si le port est 8000, alors http://localhost:8000

Voir https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds

La réponse initiale était de: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949

1
Lavande