Conectar un contenedor en ejecución a una red
En este paso, aprenderá cómo conectar un contenedor Docker en ejecución a una red existente. Esto es útil cuando tiene un contenedor que ya está en ejecución y necesita que se comunique con otros contenedores o servicios en una red específica.
Primero, creemos una nueva red que usaremos para esta demostración. Crearemos una red bridge llamada my-network
.
docker network create my-network
Debería ver una salida similar a esta, lo que indica que la red se creó correctamente:
<network_id>
Ahora, ejecutemos un contenedor simple que inicialmente no esté conectado a my-network
. Ejecutaremos un contenedor alpine
en modo desatendido (-d
) y lo llamaremos my-container
.
docker run -d --name my-container alpine sleep infinity
La salida será el ID del contenedor:
<container_id>
Para verificar que el contenedor está en ejecución y no está conectado a my-network
, puede inspeccionar la configuración de red del contenedor.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
La salida mostrará la red bridge predeterminada, pero no my-network
:
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
Ahora, conectemos el contenedor en ejecución my-container
a la red my-network
utilizando el comando docker network connect
.
docker network connect my-network my-container
No habrá salida si el comando se ejecuta correctamente.
Para verificar que el contenedor ahora está conectado a my-network
, inspeccione la configuración de red del contenedor nuevamente.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
Esta vez, la salida debería mostrar tanto la red bridge predeterminada como my-network
:
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
},
"my-network": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
Finalmente, limpiemos el contenedor y la red que creamos.
docker stop my-container
docker rm my-container
docker network rm my-network