Cambiar rango redes docker

Hace unos dias me encontré que la red por defecto en la que docker añade sus redes durante su magia es 172.17.0.0/16. Esto hacía que tuviera conflictos con la red local en la que e econtraba mi máquina dockers ya que utilizaba el mismo rango. En mi caso la solución fue definir otro rango por defecto para las nuevas networks que se creen y cambiar los rangos de las redes ya creadas.

Cambiar rango por defecto de las networks de docker

Para ello edité el fichero «docker daemon», si no existe, crearlo.

En Linux está en la ruta:  /etc/docker/daemon.json. A este fichero, que, en mi caso no existía, le añadí:

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

Con esto, las nuevas networks que se creeen obtendrán esta configuración por defecto, también se cambiarán las subredes de las redes estándar de docker: bridge y host.

Cambiar la subred de una network ya creada

Para no perder nada, primero revisa la configuración de la red que vas a cambiar, en mi caso, para ver qué contenedores estaban conectados a esa red, supongamos que la red es mi_red:

docker network inspect mi_red

Esto mostrará un json semejante a este:

[
    {
        "Name": "mi_red",
        "Id": "6e1ce019add649d1b02f1298594e8ac91dcfb5cbcb3684b7142d3f985cbd006a",
        "Created": "2023-09-14T00:29:15.141232077+02:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.17.2.0/24",
                    "Gateway": "172.17.2.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "26e93d8f4c1b4e8fdfd9837cfe5ad5001d63517c0a7c76488d054d8622444812": {
                "Name": "mi_contenedor_bd",
                "EndpointID": "43a421b448d4306b8ef624b1e2e352e52e1edd1e7c2ac1821742d323f34ae4b5",
                "MacAddress": "02:45:aa:1f:01:02",
                "IPv4Address": "172.17.2.2/24",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

Como se puede ver hay un contenedor de alias mi_contenedor_bd y con id de contenedor 26e93d8f4c1b4e8fdfd9837cfe5ad5001d63517c0a7c76488d054d8622444812 conectado a esa red, con lo que los pasos para cambiar la red serían:

1.- Desconectar los contenedores de la red

docker network disconnect mi_red 26e93d8f4c1b4e8fdfd9837cfe5ad5001d63517c0a7c76488d054d8622444812

2.- Borrar la red

docker network rm mi_red

3.- Crear la red de nuevo (en mi caso en modo brige)

docker network create -d bridge mi_red

4.- Conectar de nuevo el contenedor a la red con el mismo alias

docker network connect mi_red 26e93d8f4c1b4e8fdfd9837cfe5ad5001d63517c0a7c76488d054d8622444812 --alias mi_contenedor_bd

5.- Reiniciar el contenedor o conetenedores afectados

docker stop mi_contenedor_bd
docker start mi_contenedor_bd

Hasta aquí la nota, muchas gracias por leerme, espero que haya sido util


Publicado

en

por

Etiquetas: