Configurar Docker para que no use el rango 172.17.0.0

22

Debido a problemas con los portales cautivos y el rango predeterminado de Docker IP, 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.

Siguiendo los documentos , creé /etc/docker/daemon.jsony puse lo siguiente en él:

{
    "bip":"198.18.0.0/16"
}

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

¿Qué puedo hacer para cambiar la subred predeterminada para todas las redes de acopladores (preferiblemente sin tener que indicar mi rango de IP personalizado en cada archivo de redacción)?

jrtapsell
fuente

Respuestas:

27

Es posible redefinir el rango predeterminado.

$ docker -v
Docker version 18.06.0-ce, build 0ffa825

Edite o cree un archivo de configuración para Docker Daemon:

# nano /etc/docker/daemon.json

Agregar líneas:

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

Reiniciar dockerd:

# service docker restart

Comprueba el resultado:

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

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

rNix
fuente
1
10.10.0.0/16 se superpone con las redes globales predeterminadas. Puede usar {"base": "192.168.0.0/16","size":24}. Consulte github.com/moby/moby/blob/…
Root G
11

Hay tres lugares donde Docker generará subredes de red.

  • El puente por defecto
  • Redes puente generadas por el usuario
  • El modo enjambre genera redes superpuestas

Para el puente predeterminado (llamado "puente"), puede especificar BIP (creo que es IP de puente; asegúrese de que sea una IP de host, no una IP de red ) en el daemon.jsonarchivo. Y para las redes 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, /etc/docker/daemon.jsonse vería así:

{
  "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 rango CIDR y el tamaño de las subredes que se asignarán desde ese rango. Entonces, 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 18.09, Docker agregó la capacidad de especificar el rango de direcciones para redes superpuestas generadas en modo enjambre. Esto solo se puede hacer en el momento de la creación del enjambre en este momento, es de esperar que se actualice en el futuro para permitir docker swarm updateajustar 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
BMitch
fuente
1
Gran resumen de las opciones actuales 2018/2019. Además, si usa Docker Desktop, la bipopción en la GUI de Configuración / Preferencias. Para default-address-poolsque pueda editar el daemon.json manualmente en esa misma GUI, y para los enjambres default-addr-poolaún puede cambiarlos con el initcomando.
Bret Fisher
1

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

Con componer: especifique redes personalizadas : "... En lugar de 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 controladores y opciones de red personalizados. También puede úsela para conectar servicios a redes creadas externamente que no sean administradas por Compose ... "

poige
fuente
¿Es posible cambiar el rango de IP utilizado para las redes implícitas utilizadas por docker-compose y las que no tienen el rango establecido explícitamente?
jrtapsell
-1

Puede ser un poco brutal, pero simplemente hago una sudo ifconfig docker0 downpara cerrar la interfaz que está en conflicto con el wifi que estoy tratando de usar.

Falko Menge
fuente
La pregunta es sobre el uso de otro rango, no sobre desactivar la red.
RalfFriedl
@RalfFriedl Eso es cierto. Pero como viajero frecuente que usa muchas redes wifi diferentes, he visto que todo tipo de rangos de puertos está en conflicto. Entonces, en lugar de buscar un rango de puertos, también se puede desactivar temporalmente la red.
Falko Menge