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?
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>
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>
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
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
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
.
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