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

105voto

Tuong Le Points 905

Ajoutez ce script de shell dans votre ~/.bashrc ou le fichier correspondant :

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

Ensuite, pour obtenir l'adresse IP d'un conteneur, il suffit de faire ceci :

docker-ip YOUR_CONTAINER_ID

Pour la nouvelle version du Docker, veuillez utiliser ce qui suit :

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

48voto

Jake W Points 427

Dans Docker 1.3+, vous pouvez également le vérifier en utilisant :

Entrez le Docker en cours d'exécution (Linux) :

docker exec [container-id or container-name] cat /etc/hosts
172.17.0.26 d8bc98fa4088
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.17 mysql

Pour Windows :

docker exec [container-id or container-name] ipconfig

2 votes

Ou simplement docker exec [container-name-or-id] ip a

1 votes

Pour Windows docker exec [container-id or container-name] ipconfig

46voto

zhouji Points 1050

Afficher toutes les adresses IP des conteneurs :

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

35voto

Athena Points 321

A partir de la version 1.10.3 de Docker, build 20f81dd

À moins que vous n'ayez indiqué le contraire à Docker, ce dernier lance toujours vos conteneurs dans le réseau pont. Vous pouvez donc essayer cette commande ci-dessous :

docker network inspect bridge

Ce qui devrait alors retourner une section Containers qui affichera l'adresse IP de ce conteneur en cours d'exécution.

[
    {
        "Name": "bridge",
        "Id": "40561e7d29a08b2eb81fe7b02736f44da6c0daae54ca3486f75bfa81c83507a0",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16"
                }
            ]
        },
        "Containers": {
            "025d191991083e21761eb5a56729f61d7c5612a520269e548d0136e084ecd32a": {
                "Name": "drunk_leavitt",
                "EndpointID": "9f6f630a1743bd9184f30b37795590f13d87299fe39c8969294c8a353a8c97b3",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        }
    }
]

33voto

spicyramen Points 407

Exécuter :

docker ps -a

Cela affichera les images docker actives :

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
3b733ae18c1c        parzee/database     "/usr/lib/postgresql/"   6 minutes ago       Up 6 minutes                 5432/tcp            serene_babbage

Utilisez la valeur CONTAINER ID :

docker inspect <CONTAINER ID> | grep -w "IPAddress" | awk '{ print $2 }' | head -n 1 | cut -d "," -f1

"172.17.0.2"

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