Connecter un conteneur en cours d'exécution à un réseau
Dans cette étape, vous apprendrez à connecter un conteneur Docker en cours d'exécution à un réseau existant. Cela est utile lorsque vous avez un conteneur déjà en cours d'exécution et que vous avez besoin qu'il communique avec d'autres conteneurs ou services sur un réseau spécifique.
Tout d'abord, créons un nouveau réseau que nous utiliserons pour cette démonstration. Nous allons créer un réseau bridge nommé my-network
.
docker network create my-network
Vous devriez voir une sortie similaire à celle-ci, indiquant que le réseau a été créé avec succès :
<network_id>
Maintenant, exécutons un simple conteneur qui n'est pas initialement connecté à my-network
. Nous allons exécuter un conteneur alpine
en mode détaché (-d
) et le nommer my-container
.
docker run -d --name my-container alpine sleep infinity
La sortie sera l'ID du conteneur :
<container_id>
Pour vérifier que le conteneur est en cours d'exécution et n'est pas connecté à my-network
, vous pouvez inspecter les paramètres réseau du conteneur.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
La sortie montrera le réseau bridge par défaut, mais pas my-network
:
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
Maintenant, connectons le conteneur my-container
en cours d'exécution au réseau my-network
en utilisant la commande docker network connect
.
docker network connect my-network my-container
Il n'y aura pas de sortie si la commande est exécutée avec succès.
Pour vérifier que le conteneur est maintenant connecté à my-network
, inspectons à nouveau les paramètres réseau du conteneur.
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
Cette fois, la sortie devrait montrer à la fois le réseau bridge par défaut et 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
}
}
Enfin, nettoyons le conteneur et le réseau que nous avons créés.
docker stop my-container
docker rm my-container
docker network rm my-network