Configuración de Docker para que no use el rango 172.17.0.0

Debido a problemas con los portales cautivos y el rango de IP predeterminado de Docker, estoy tratando de hacer que Docker use el rango 198.18.0.0, en lugar de 172.17.0.0, que choca con los portales cautivos utilizados en los trenes donde vivo.

Siguiente los documentos, Yo creé /etc/docker/daemon.json, y pon lo siguiente en él:

{    "bip":"198.18.0.0/16"}

Esto funcionó para docker0, pero parece que no afectó a ninguna de las otras redes, y al usar docker0, la primera red creada es 172.17.0.0, que recrea el choque.

Qué puedo hacer para cambiar la subred predeterminada todo redes docker (preferiblemente sin tener que indicar mi rango de IP personalizado en cada archivo de composición)?

Es posible redefinir el rango predeterminado.

$ docker -vDocker version 18.06.0-ce, build 0ffa825

Editar o crear un archivo de configuración para el demonio docker:

# nano /etc/docker/daemon.json

Añadir líneas:

{  "default-address-pools":  [    {"base":"10.10.0.0/16","size":24}  ]}

Reiniciar dockerd:

# service docker restart

Compruebe el resultado:

$ docker network create foo$ docker network inspect foo | grep Subnet                    "Subnet": "10.10.1.0/24"

También funciona para docker-compose. Más información aquí https://github.com/moby/moby/pull/29376 (fusionar)

Hay tres lugares en los que Docker generará subredes de red.

  • El puente predeterminado
  • Redes de puente generadas por el usuario
  • Redes superpuestas generadas en modo enjambre

Para el puente predeterminado (llamado "puente"), puede especificar BIP (creo que es la IP del puente; asegúrese de que sea una IP de host, no una IP de red) en el daemon.json file. Y para las redes de puente generadas por el usuario, puede definir un grupo de subredes para elegir (suponiendo que el usuario no especifique manualmente una subred). Para estos dos, su /etc/docker/daemon.json se vería como:

{  "bip": "10.200.0.1/24",  "default-address-pools":[    {"base":"10.201.0.0/16","size":24},    {"base":"10.202.0.0/16","size":24}  ]}

Cada configuración de grupo de direcciones anterior define un intervalo de CIDR y el tamaño de las subredes que se asignarán desde ese intervalo. Por lo tanto, lo anterior define dos rangos de clase B que se asignan como redes de clase C (/24). Necesita al menos 18.06 para los grupos de direcciones predeterminados. Deberá volver a cargar el demonio de docker para que se aplique este cambio (systemctl reload docker). Y este cambio solo modificará las redes de usuarios recién creadas, por lo que deberá detener los contenedores y eliminar las redes existentes en el rango incorrecto.


En la versión 18.09, Docker agregó la capacidad de especificar el rango de direcciones para las redes superpuestas generadas en modo enjambre. Esto solo se puede hacer en el momento de la creación del enjambre en este momento, con suerte, se actualizará en el futuro para permitir docker swarm update para ajustar estos grupos:

$ docker swarm init \  --default-addr-pool 10.202.0.0/16 \  --default-addr-pool 10.203.0.0/16 \  --default-addr-pool-mask-length 24

Yo uso Escritorio de Docker en un Windows sistema operativo e intenté cambiar la IP del puente predeterminada.

Docker arroja un error y me pidió que restableciera la configuración cada vez que intentaba cambiar solo el pitido en la configuración.

Esto funcionó: (tengo que profundizar y entender cómo funciona)

{  "bip": "192.168.1.5/24",   "fixed-cidr": "192.168.1.5/25",   "default-address-pools":[      { "base":"192.168.2.5/24", "size":28 }  ]}

Configure el red de puente predeterminada: "...Para configurar la red de puente predeterminada, especifique las opciones en daemon.json. Aquí hay un ejemplo de demonio.json con varias opciones especificadas. Solo especifique la configuración que necesita personalizar. …"

Con compose: Especificar redes personalizadas: "Instead En lugar de simplemente usar la red de aplicaciones predeterminada, puede especificar sus propias redes con la clave de redes de nivel superior. Esto le permite crear topologías más complejas y especificar opciones y controladores de red personalizados. También puede usarlo para conectar servicios a redes creadas externamente que Compose no administra. …"

Puede ser un poco brutal, pero simplemente hago un sudo ifconfig docker0 down para apagar la interfaz que entra en conflicto con el wifi que estoy tratando de usar.