Las direcciones IP estáticas no cambian cuando los contenedores o servicios se detienen y se inician, lo que los hace útiles para redes permanentes. Asignar direcciones IP estáticas a los contenedores de Docker es una manera fácil de hacerlos más accesibles.
¿Por qué usar una IP estática?
Hay dos tipos de "IP estática"; direcciones IP privadas que se usan para redes internas dentro de un servidor y direcciones IP públicas que se usan para conectarse fuera del servidor, a menudo a través de Internet.
Si necesita configurar una dirección IP pública para un contenedor, querrá usar enlaces de puerto. Puede "publicar" puertos en el contenedor Docker para que sean accesibles desde el host. Si bien existen configuraciones de red más avanzadas, esta es, con mucho, la más fácil y común. Por ejemplo, enlazar el puerto 80 (HTTP) en el host para apuntar a un contenedor NGINX:
docker run --publish=80:8080 nginx
Si desea crear una dirección IP privada estática, debe considerar si necesita usar una. La mayoría de las veces, querrá una IP estática para comunicarse con un contenedor desde otro o desde el host. En la mayoría de los casos, la red integrada de Docker puede manejar esto.
Docker viene con una red predeterminada, pero si crea la suya propia, puede otorgar alias de contenedores cuando se inicien en esa red. Este alias se resolverá automáticamente en la IP privada del contenedor. Por ejemplo, el contenedor NGINX aquí puede acceder a la instancia de MongoDB con la cadena de conexión mongodb://mongohost:27017
.
docker network create example docker run --net example --name nginx -d nginx docker network connect example --alias mongohost mongodb
Para obtener más información, puede leer la documentación de Docker sobre redes puente definidas por el usuario.
Sin embargo, todavía hay muchas ocasiones en las que querrá especificar manualmente una dirección IP privada, como acceder a contenedores directamente desde el host. Aún necesitará usar una red Docker personalizada para hacerlo, pero es fácil de configurar.
Configuración de direcciones IP estáticas
Primero, deberá configurar una red Docker y, dado que nos preocupamos por la dirección IP, deberá especificar una subred fija:
docker network create --subnet=172.20.0.0/16 customnetwork
RELACIONADO: ¿Qué son las subredes y cómo afectan a mi red?
Luego, puede ejecutar un contenedor, especificando la red con --net
y especificando la IP con -ip
bandera:
docker run --net customnetwork --ip 172.20.0.10 -d container
Puede verificar que la dirección sea correcta al verificarla en el contenedor con exec -t bin/bash
o inspeccionando la lista de contenedores de Docker:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id
Uso de Docker Compose
Docker Compose es una herramienta que se utiliza para lanzar múltiples contenedores con configuraciones predefinidas. Esto incluye la configuración de redes con subredes específicas, y puede adjuntar contenedores a redes con direcciones IP fijas utilizando la ipv4_address
bloque de configuración que se muestra aquí:
version: '2' services: webserver: image: nginx container_name: web-server networks: customnetwork: ipv4_address: 172.20.0.10 networks: customnetwork: ipam: config: - subnet: 172.20.0.0/16