Nodo Docker con múltiples direcciones IP: conmutación entre ellas

Nodo Docker con múltiples direcciones IP: conmutación entre ellas

Mi configuración de red se parece a esta en un host de Docker:

➜  server git:(master) ✗ ip addr
3: ens9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:02:c9:bb:3b:f4 brd ff:ff:ff:ff:ff:ff
    inet <IP Address>.18/29 brd <Default Gateway>.23 scope global ens9
       valid_lft forever preferred_lft forever
    inet <IP Address>.19/29 brd <Default Gateway>.23 scope global secondary ens9:0
       valid_lft forever preferred_lft forever

Actualmente, tengo servicios que no son de Docker ejecutándose en el puerto 443de la .18dirección IP y necesito mantenerlo así. Sin embargo, cuando abro un puerto usando a Dockerfile, no se inicia porque 443el host ya está utilizando el puerto.

¿Hay alguna manera de cambiar globalmente la dirección IP que usa Docker al abrir un puerto? No quiero tener que configurar esto manualmente en el archivo de configuración de cada contenedor, que por supuesto ya funciona.

Respuesta1

No es necesario exponer puertos para acceder a ciertos contenedores en la declaración de servicio. De hecho, puedes declarar una red dentro de un único docker-compose.yml con una subred diferente como esta:

version: '2'

networks:
  custom-network:
    ipam:
      driver: default
      config:
        - subnet: 73.0.0.0/16
          ip_range: 73.0.0.0/24
          gateway: 73.0.0.254

services:
  simple-nginx:
    image: nginx
    networks:
      custom-network:
        ipv4_address: 73.0.0.10

Y acceda al servicio nginx utilizando la IP estática 73.0.0.10para la red personalizada.

Para obtener más información, siempre puede consultar los documentos de red de Docker-Compose: https://docs.docker.com/compose/networking/

O directamente los documentos de Docker: https://docs.docker.com/engine/userguide/networking/

información relacionada