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

32voto

ctrlbrk Points 844

Ma réponse :

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} %tab% {{.Name}}' $(docker ps -aq
) | sed 's#%tab%#\t#g' | sed 's#/##g' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n

Aussi comme un alias de bash :

docker-ips() {   docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} %tab% {{.Name}}' $(docker ps -aq) | sed 's#%tab%#\t#g' | sed 's#/##g' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n }

La sortie est triée par adresse IP, et délimitée par des tabulations :

# docker-ips
172.18.0.2       memcached
172.18.0.3       nginx
172.18.0.4       fpm-backup
172.18.0.5       dns
172.18.0.6       fpm-beta
172.18.0.7       exim
172.18.0.8       fpm-delta
172.18.0.9       mariadb
172.18.0.10      fpm-alpha
172.19.0.2       nextcloud-redis
172.19.0.3       nextcloud-db
172.19.0.4       nextcloud

28voto

silgon Points 2646

Sur la base de certaines des réponses que j'ai aimées, j'ai décidé de les fusionner en une fonction pour obtenir toutes les adresses IP et une autre pour un conteneur spécifique. Elles sont maintenant dans mon .bashrc fichier.

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

docker-ip() {
  docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$@"
}

La première commande donne l'adresse IP de tous les conteneurs et la seconde l'adresse IP d'un conteneur spécifique.

docker-ips
docker-ip YOUR_CONTAINER_ID

22voto

Benyamin Jafari Points 2126

Voici une réponse rapide :

Obtenez le nom ou l'ID de votre conteneur :

docker container ls

Alors obtenez l'IP :

docker inspect <container_ID Or container_name> |grep 'IPAddress'

Obtenez le port :

docker inspect <container_ID Or container_name> |grep 'Port'

21voto

Dunk Points 746

J'ai écrit le script Bash suivant pour obtenir une table d'adresses IP de tous les conteneurs fonctionnant sous docker-compose .

function docker_container_names() {
    docker ps -a --format "{{.Names}}" | xargs
}

# Get the IP address of a particular container
dip() {
    local network
    network='YOUR-NETWORK-HERE'
    docker inspect --format "{{ .NetworkSettings.Networks.$network.IPAddress }}" "$@"
}

dipall() {
    for container_name in $(docker_container_names);
    do
        local container_ip=$(dip $container_name)
        if [[ -n "$container_ip" ]]; then
            echo $(dip $container_name) " $container_name"
        fi
    done | sort -t . -k 3,3n -k 4,4n
}

Vous devez remplacer la variable réseau par votre propre nom de réseau.

20voto

Rushal Verma Points 191

Docker est écrit en Go et utilise également la syntaxe Go pour les requêtes.

Pour inspecter l'adresse IP d'un conteneur particulier, vous devez exécuter la commande ( -f pour "format") :

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

Pour l'ID ou le nom du conteneur, vous pouvez exécuter la commande

docker container ls

qui listera tous les conteneurs en cours d'exécution.

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