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_redEsto 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 26e93d8f4c1b4e8fdfd9837cfe5ad5001d63517c0a7c76488d054d86224448122.- Borrar la red
docker network rm mi_red3.- Crear la red de nuevo (en mi caso en modo brige)
docker network create -d bridge mi_red4.- Conectar de nuevo el contenedor a la red con el mismo alias
docker network connect mi_red 26e93d8f4c1b4e8fdfd9837cfe5ad5001d63517c0a7c76488d054d8622444812 --alias mi_contenedor_bd5.- Reiniciar el contenedor o conetenedores afectados
docker stop mi_contenedor_bd
docker start mi_contenedor_bdHasta aquí la nota, muchas gracias por leerme, espero que haya sido util
