Obtener la dirección IP de un contenedor Docker

Isaac Tony 30 enero 2023
  1. Conéctese a la red Bridge y obtenga la dirección IP de un contenedor Docker
  2. Use docker inspect para obtener la dirección IP de un contenedor Docker
Obtener la dirección IP de un contenedor Docker

Este tutorial demuestra cómo obtener la dirección IP de una dirección IP de contenedor Docker.

Conéctese a la red Bridge y obtenga la dirección IP de un contenedor Docker

Una de las razones importantes por las que los contenedores docker son tan convenientes es que podemos conectarlos fácilmente. Esto permite que los contenedores se comuniquen y compartan recursos fácilmente.

También podemos conectar contenedores a cargas de trabajo no docker.

Este artículo no se trata de redes Dockers; por lo tanto, no profundizaremos en los detalles de las redes docker. Sin embargo, Docker proporciona varios controladores que hacen que la red se pueda conectar mediante controladores Bridge.

Docker nos permite crear redes utilizando sus controladores predeterminados conocidos como controladores de puente. Sin embargo, la red puente es privada con un alcance limitado a los contenedores en el host.

Puede ver las redes predeterminadas en su host y las que tiene anteriormente. Cada instalación de Docker generalmente incluye las tres redes predeterminadas que se muestran a continuación.

isaac@DESKTOP-HV44HT6:~$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
9729860fa596   bridge    bridge    local
0667c3f7d0f0   host      host      local
c3273b158256   none      null      local

Docker siempre lanzará nuevos contenedores en la red del puente a menos que se especifique lo contrario.

Las direcciones IP de contenedores son una parte esencial de los contenedores Dockers de red. Por lo general, a los contenedores se les asigna una dirección IP para cada red a la que se conectan.

Por otro lado, también puede conectar manualmente un contenedor docker a la red del puente usando el siguiente comando.

$ docker run -dt rabbitmq

Esto creará un contenedor Docker y lo asignará a la red puente. Antes de que podamos inspeccionar la red para confirmar que está conectada a ella, primero debemos asegurarnos de que el contenedor se está ejecutando.

$ docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED              STATUS              PORTS                                                 NAMES
42487cad0390   rabbitmq   "docker-entrypoint.s…"   About a minute ago   Up About a minute   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   compassionate_keller

Inspeccionar la red del puente nos permitirá ver los contenedores conectados a las redes, entre otros detalles, como las direcciones IP de los contenedores y la subred predeterminada para el contenedor. Los detalles se devuelven en formato JSON, como se muestra a continuación.

~$ docker network inspect bridge

Producción :

"ConfigOnly": false,
        "Containers": {
            "42487cad0390a8de6d1a88bc1d6c09ffdf3162dc85d4d5d3dc70200b2348b673": {
                "Name": "compassionate_keller",
                "EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            }

La dirección IP de nuestro contenedor en el ejemplo anterior es 172.17.0.4/16.

También podemos tener varios contenedores conectados a la red, y podemos encontrar fácilmente las direcciones IP de ambos inspeccionando la red del puente. Como se muestra a continuación, agregamos un contenedor basado en la imagen de Nginx a la red del puente.

isaac@DESKTOP-HV44HT6:~$ docker run -dt nginx
4ab752ab92582a0eb2cb14475094460fc8cc608c93a357a8dca082cfea2bc368

Ahora, si inspeccionamos la red del puente, podremos obtener las direcciones IP de los dos contenedores. Recuerde que los dos contenedores deben estar funcionando.

isaac@DESKTOP-HV44HT6:~$ docker network inspect bridge

Producción :

"Containers": {
            "42487cad0390a8de6d1a88bc1d6c09ffdf3162dc85d4d5d3dc70200b2348b673": {
                "Name": "compassionate_keller",
                "EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            },
            "4ab752ab92582a0eb2cb14475094460fc8cc608c93a357a8dca082cfea2bc368": {
                "Name": "trusting_keller",
                "EndpointID": "a2babd11586f493cf5e57f5d9920a7f5648cf6163e77030521bef62fc9f34a63",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        }

Las direcciones IP de los dos contenedores son 172.17.0.4/16 y 172.17.0.2/16 en orden de creación.

Use docker inspect para obtener la dirección IP de un contenedor Docker

También podemos usar docker inspect y el nombre del contenedor o la identificación del contenedor para encontrar la dirección IP de un contenedor Docker específico. Esto devolverá igualmente muchos otros detalles en formato JSON.

$ docker inspect 42487cad0390

Producción :

"Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "9729860fa5961eeac55f921ee787b2c82a15146cd36117b5394243be2149e929",
                    "EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }

En este caso, hemos inspeccionado el contenedor basándonos en la imagen oficial de Nginx. Puede consultar la documentación de Docker para obtener información divertida sobre la creación de redes de contenedores de Docker.

Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

Artículo relacionado - Docker Container