Pregunta ¿Cómo obtener la dirección IP de un contenedor Docker del host?


¿Hay algún comando que pueda ejecutar para obtener la dirección IP del contenedor directamente desde el host después de que se crea un nuevo contenedor?

Básicamente, una vez que Docker crea el contenedor, quiero implementar mis propios scripts de configuración de contenedor y configuración de contenedor.


763
2018-06-17 22:10


origen


Respuestas:


docker inspect <container id> | grep "IPAddress"


115
2018-01-04 20:01



los --format La opción de inspeccionar viene al rescate.

Sintaxis del cliente Docker moderno:

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

Sintaxis del cliente Old Docker:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

Lo cual devolverá solo la dirección IP.


1164
2017-12-19 15:56



Puedes usar docker inspect <container id>

Ejemplo:

CID=$(docker run -d -p 4321 base nc -lk 4321);
docker inspect $CID

451
2018-06-17 22:37



Primero obtenga la ID del contenedor:

docker ps

(La primera columna es para la identificación del contenedor)

Use la ID del contenedor para ejecutar:

docker inspect <container ID>

En la parte inferior, debajo de "NetworkSettings", puede encontrar "IPAddress"

O simplemente hazlo:

docker inspect <container id> | grep "IPAddress"

280
2017-09-19 22:08



Para obtener todos los nombres de los contenedores y sus direcciones IP en un solo comando.

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

Si estás usando docker-compose el comando será este:

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

El resultado será:

/containerA - 172.17.0.4
/containerB - 172.17.0.3
/containerC - 172.17.0.2

84
2018-01-12 16:52



Agregue este script de shell en su ~/.bashrc o archivo relevante:

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

Luego, para obtener una dirección IP de un contenedor, simplemente haga esto:

docker-ip YOUR_CONTAINER_ID

Para la nueva versión de Docker, use lo siguiente:

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

79
2017-11-18 00:04



Mostrar todas las direcciones IP de los contenedores:

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

30
2018-04-27 07:50



En Docker 1.3+, también puedes verificarlo a través de los pasos a continuación:

Ingrese el Docker en ejecución:

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

28
2017-11-02 00:05



Ejecutar:

docker ps -a

Esto mostrará las imágenes del acoplador activo:

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

Use el valor de ID DE CONTENEDOR:

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

"172.17.0.2"


18
2018-01-18 20:01



A partir de Docker versión 1.10.3, compile 20f81dd

A menos que le haya dicho a Docker lo contrario, Docker siempre lanza sus contenedores en la red del puente. Entonces puedes probar este comando a continuación:

docker network inspect bridge

Que debería devolver una sección de Contenedores que mostrará la dirección IP para ese contenedor en ejecución.

[
    {
        "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"
        }
    }
]

18
2018-04-08 14:06