Existe-t-il une commande que je peux exécuter pour obtenir l'adresse IP du conteneur directement à partir de l'hôte après la création d'un nouveau conteneur?
Fondamentalement, une fois que Docker crée le conteneur, je souhaite lancer mes propres scripts de déploiement de code et de configuration de conteneur.
Réponses:
L'
--format
option deinspect
vient à la rescousse.La syntaxe du client Docker moderne est:
L'ancienne syntaxe du client Docker est:
Ces commandes renverront 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.la source
<no value>
réponse sur un Mac en utilisant Fig / Boot2Docker<no value>
si vous essayez d'exécuter ceci sur un conteneur qui n'est pas en cours d'exécution. Assurez-vous que votre conteneur fonctionne avant de procéder.{{ .NetworkSettings.Networks.$network.IPAddress }}
. La valeur par défaut semble être bridge, mais sous docker-compose, ce sera un nom spécifique qui dépend du nom de votre application (je pense à partir de l'indicateur --project-name, bien que cela dépende également du type de configuration réseau vous avez configuré). J'ai écrit une réponse complète dans une réponse ici stackoverflow.com/questions/17157721/…Vous pouvez utiliser
docker inspect <container id>
.Par exemple:
la source
docker inspect $CID | grep IPAddress | cut -d '"' -f 4
ça, ça marche bien :)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'
docker inspect -format '{{ .NetworkSettings.IPAddress }}' ${CID}
docker inspect -format '{{ .NetworkSettings.IPAddress }}' ${CID}
est la nouvelle syntaxe.-format
est obsolète, il devient--format
.Obtenez d'abord l'ID du conteneur:
(La première colonne est pour l'ID du conteneur)
Utilisez l'ID de conteneur pour exécuter:
En bas, sous "NetworkSettings", vous pouvez trouver "IPAddress"
Ou faites simplement:
la source
docker run -it MYCONTAINER /bin/bash
), la sortie deinspect
n'a pas de sectionNetworkSettings
!docker network inspect bridge | grep Gateway | grep -o -E '[0-9.]+'
... | grep IP
solution à tous les détails de mise en forme nécessaires pour obtenir IP. +1docker run -it MYIMAGE
(ce n'est pas un nom de conteneur ); si vous le faites,docker inspect MYIMAGE
vous obtiendrez des informations statiques sur l' image . Vous devez trouver le nom du conteneur en cours d'exécution (ou utiliser son identifiant comme d'autres le suggèrent). Sur mon système, le premier conteneur de ce type créé à partir de cette image par défaut est nomméMYIMAGE_1
, tout commedocker inspect MYIMAGE_1
NetworkSettings.Vous pouvez ajouter
-i
à grep pour ignorer le cas, puis même ce qui suit fonctionnera:la source
Pour obtenir tous les noms de conteneurs et leurs adresses IP en une seule commande.
Si vous utilisez
docker-compose
la commande sera la suivante:La sortie sera:
la source
{{.NetworkSettings.IPAddress }}
de{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}
docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -aq | xargs) | sed -e '/^$/d'
. Lesed(1)
supprime les lignes vides pour les conteneurs présents, mais n'ayant pas d'adresse IP.Ajoutez ce script shell dans votre
~/.bashrc
fichier ou dans le fichier correspondant:Ensuite, pour obtenir une adresse IP d'un conteneur, faites simplement ceci:
Pour la nouvelle version du Docker, veuillez utiliser ce qui suit:
la source
Template parsing error: template: :1:19: executing "" at <.NetworkSettings.IPA...>: map has no entry for key "NetworkSettings"
source ~/.bash_profile
Afficher toutes les adresses IP du conteneur:
la source
Dans Docker 1.3+, vous pouvez également le vérifier en utilisant:
Entrez le Docker en cours d'exécution (Linux):
Pour les fenêtres:
la source
docker exec [container-name-or-id] ip a
docker exec [container-id or container-name] ipconfig
Depuis Docker version 1.10.3, build 20f81dd
Sauf indication contraire de Docker, Docker lance toujours vos conteneurs dans le réseau de pont. Vous pouvez donc essayer cette commande ci-dessous:
Qui devrait ensuite renvoyer une section Conteneurs qui affichera l'adresse IP de ce conteneur en cours d'exécution.
la source
Exécuter:
Cela affichera des images de docker actives:
Utilisez la valeur ID CONTENEUR:
"172.17.0.2"
la source
Sur la base de certaines des réponses que j'ai adorées, j'ai décidé de les fusionner à une fonction pour obtenir toutes les adresses IP et une autre pour un conteneur spécifique. Ils sont maintenant dans mon
.bashrc
dossier.La première commande donne l'adresse IP de tous les conteneurs et la seconde l'adresse IP d'un conteneur spécifique.
la source
Conteneurs de référence par nom:
Saisissez ensuite l'adresse IP par son nom:
la source
J'ai écrit le script Bash suivant pour obtenir un tableau des adresses IP de tous les conteneurs fonctionnant sous
docker-compose
.Vous devez changer le réseau variable en votre propre nom de réseau.
la source
Voici une réponse de travail rapide:
Obtenez le nom ou l'ID de votre conteneur:
Obtenez ensuite l'IP:
Obtenez le port:
la source
Docker est écrit en Go et utilise également la syntaxe Go à des fins de requête.
Pour inspecter l'adresse IP d'un conteneur particulier, vous devez exécuter la commande (
-f
pour "format"):Pour l'ID ou le nom du conteneur, vous pouvez exécuter la commande
qui répertorie tous les conteneurs en cours d'exécution.
la source
Voici une solution que j'ai développée aujourd'hui en Python, en utilisant la
docker inspect container
sortie JSON comme source de données.J'ai beaucoup de conteneurs et d'infrastructures que je dois inspecter, et j'ai besoin d'obtenir des informations réseau de base à partir de n'importe quel conteneur, de manière rapide et jolie . C'est pourquoi j'ai fait ce script.
IMPORTANT: depuis la version 1.9, Docker vous permet de créer plusieurs réseaux et de les attacher aux conteneurs.
La sortie est:
la source
Ce qui précède fonctionne si le conteneur est déployé sur le réseau de pont par défaut.
Cependant, si vous utilisez un réseau de pont personnalisé ou un réseau de superposition, j'ai trouvé que ce qui suit fonctionne mieux:
la source
Pour étendre la réponse de ko-dos, voici un alias pour répertorier tous les noms de conteneurs et leurs adresses IP:
la source
docker ps -q
pour éviter letail
, et--format
pour éviter le grep. Vous pouvez également transmettre plusieurs ID de conteneurdocker inspect
plutôt que de boucler dans le shell.docker ps -q
affiche uniquement les ID numériques des conteneurs, mais je pense qu'il est préférable d'utiliser leur nom.tail
ne sert qu'à se débarrasser de la première ligne (en-tête du tableau) et est toujours nécessaire. Je pourrais utiliser--format
, bien que:docker ps | tail -n +2 | while read -a a; do name=${a[$((${#a[@]}-1))]}; echo -ne "$name\t"; docker inspect --format="{{.NetworkSettings.IPAddress}}" $name | cut -d \" -f 4; done
. Mais cela ne semble pas être une grande amélioration ... l'grep
OMI était plus lisible.docker inspect $cid | grep IPAddress | cut -d '"' -f 4 | tail -n 1
J'utilise ce moyen simple
par exemple
la source
Si vous avez installé Docker à l'aide de Docker Toolbox, vous pouvez utiliser l'application Kitematic pour obtenir l'adresse IP du conteneur:
la source
docker inspect
cela ne fonctionne pas lorsque vous exécutez la boîte à outils Docker. Il signalera une adresse IP, mais ce n'est pas l'adresse correcte que vos services utiliseront.Pour obtenir l'adresse IP et le port hôte d'un conteneur:
Production:
la source
REMARQUE!!! pour Docker Compose Usage:
Étant donné que Docker Compose crée un réseau isolé pour chaque cluster, les méthodes ci-dessous ne fonctionnent pas avec
docker-compose
.La manière la plus élégante et la plus simple est de définir une fonction shell, actuellement la réponse la plus votée chez WouterD :
Docker peut écrire des ID de conteneur dans un fichier comme les programmes Linux:
En cours d'exécution avec
--cidfile=filename
, Docker vide l'ID du conteneur dans "nom de fichier".Voir « Docker exécute la section équivalente PID » pour plus d'informations.
Utilisation d'un fichier PID:
Conteneur en cours d'exécution avec
--cidfile
paramètre, leapp.cid
contenu du fichier est comme:Vous pouvez utiliser le contenu des fichiers pour inspecter les conteneurs Docker:
Vous pouvez extraire l'IP du conteneur à l'aide d'un script Python en ligne:
Voici une forme plus conviviale pour l'homme:
Voir « 10 alternatives pour obtenir les adresses IP du conteneur Docker » pour plus d'informations.
la source
Pour Windows 10:
la source
Cela répertoriera toutes les adresses IP des conteneurs sur l'hôte:
la source
Docker inspecte l'utilisation pour imprimer tous les ips du conteneur et ses noms respectifs
la source
Juste pour être complet:
J'aime vraiment l'
--format
option, mais au début, je n'en étais pas conscient, j'ai donc utilisé un simple doublure Python pour obtenir le même résultat:la source
Combiner les réponses précédentes avec la recherche de l'ID de conteneur en fonction du nom de l'image Docker:
la source
Utilisation:
la source
$ docker inspect c4591485328d | grep IPAddress | grep -v null| cut -d '"' -f 4 | head -1
172.17.0.2
Pour les conteneurs Windows, utilisez
où
<container>
est le nom ou l' identifiant du conteneur.Vous pouvez utiliser
docker ps
pour trouver l'id du conteneur.la source
Si vous avez oublié l'ID du conteneur ou que vous ne souhaitez pas manipuler avec les commandes shell, il est préférable d'utiliser l'interface utilisateur comme Portainer.
https://portainer.io/
Vous y trouverez toutes les informations sur le conteneur également IP.
la source