J'utilise Docker pour Mac. J'exécute un microservice basé sur nodejs dans un conteneur Docker. Je souhaite tester le microservice de nœud via le navigateur. Comment obtenir l'adresse IP du conteneur Docker en cours d'exécution?
docker
containers
docker-for-mac
user3067875
la source
la source
Réponses:
Si vous ne souhaitez pas mapper les ports de votre hôte vers le conteneur, vous pouvez accéder directement à l'adresse IP de la plage docker pour le conteneur. Cette plage est par défaut accessible uniquement depuis votre hôte. Vous pouvez vérifier les données de votre réseau de conteneurs en:
Il est probablement préférable de filtrer:
Habituellement, la plage d'adresses IP du docker par défaut est
172.17.0.0/16
. Votre hôte devrait être172.17.0.1
et votre premier conteneur devrait l'être172.17.0.2
si tout est normal et que vous n'avez spécifié aucune option réseau spéciale.EDIT Une autre façon plus élégante d'utiliser les fonctionnalités du docker au lieu de "bash tricking":
la source
localhost
:)http://172.17.0.2:anyPort
partir de l'hôte. Bien sûr, si vous souhaitez y accéder en utilisant localhost sur l'hôte, vous devez mapper les ports. Va voir ce que veut l'OP.docker run --name struts --rm -i tomcat
2. Obtenez l'IP de votre conteneur (si vous n'en avez qu'un):docker inspect struts | grep '"IPAddress"' | head -n 1
3. Ouvrez-le sur le navigateur de l'hôtehttp://x.x.x.x:8080
. Vous pouvez voir la page par défaut d'Apache Tomcat.Utilisez l'
--format
option pour obtenir uniquement l'adresse IP à la place des informations complètes sur le conteneur:la source
Pour les moteurs docker modernes, utilisez cette commande:
et pour les moteurs plus anciens, utilisez:
la source
si vous souhaitez l'obtenir directement dans le conteneur, vous pouvez essayer
la source
Vous pouvez démarrer votre conteneur avec le drapeau
-P
. Cela "attribue" un port aléatoire au port exposé de votre image.Avec
docker port <container id>
vous pouvez voir le port choisi au hasard. L'accès est alors possible vialocalhost:port
.la source
Pour mon cas, ci-dessous a travaillé sur Mac :
Je ne pouvais pas accéder aux adresses IP des conteneurs directement sur Mac. J'ai besoin d'utiliser
localhost
avec la redirection de port, par exemple si le port est 8000, alorshttp://localhost:8000
Voir https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
La réponse originale était de: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
la source
Vous ne pouvez pas accéder à l'adresse IP du docker depuis l'extérieur de cette machine hôte. Si votre navigateur est sur une autre machine, mieux vaut mapper le port hôte au port du conteneur en passant
-p 8080:8080
commande run.En passant,
-p
vous pouvez mapper le port hôte sur le port conteneur et un proxy est configuré pour transférer tout le trafic pour ledit port hôte vers le port conteneur désigné.la source