Exemple de mise en réseau de base sur la façon de connecter des conteneurs Docker
L’une des nombreuses fonctionnalités intéressantes intégrées directement dans Docker est la mise en réseau. La fonctionnalité de mise en réseau de Docker est accessible à l’aide d’un indicateur --link qui permet de connecter n’importe quel nombre de conteneurs Docker sans avoir besoin d’exposer les ports internes d’un conteneur au monde extérieur.
Dans ce guide, vous allez apprendre à mettre en réseau deux conteneurs Docker ou plus sur un système Linux à l’aide d’instructions en ligne de commande. Cela fonctionnera sur n’importe quelle distribution Linux. Consultez les instructions étape par étape ci-dessous pour savoir comment.
Dans ce tutoriel, vous allez apprendre :
- Comment mettre en réseau des conteneurs Docker
Liaison de deux conteneurs Docker via la mise en réseau sur Linux
Connexion de conteneurs Docker via la mise en réseau
Dans cette configuration, vous allez apprendre à lier deux ou plusieurs conteneurs Docker à l’aide d’une technique de mise en réseau Docker simple. On peut commencer par le déploiement de notre premier conteneur Docker, nommé
sanbox1, auquel on va ensuite créer un lien réseau :docker run -it --name sandbox1 -h sanbox1 linuxconfig/sandbox /bin/bashIl n’y a rien de nouveau dans la commande ci-dessus, si ce n’est que nous n’exposons aucun port réseau même si notre intention est d’accéder aux services (SSH, connexion à une base de données, etc.) via leurs numéros de port pertinents.
La commande Linux suivante déploiera un deuxième conteneur, cette fois un conteneur docker parent nommé
sandbox2. Nous utiliserons également un indicateur--linkqui créera une relation parent-enfant avec le conteneursandbox1précédemment déployé. De plus, l’indicateur--linkpermettra au conteneur parent d’accéder à tous les services s’exécutant surle conteneur sandbox1via ses numéros de port correspondants sans que le conteneur enfant ait besoin d’exposer des ports au monde extérieur.docker run -it --name sandbox2 -h sandbox2 --link sandbox1:sandbox1 linuxconfig/sandbox /bin/bashLa commande docker ci-dessus utilise l’indicateur
--linkqui attend deux arguments séparés par deux points. Le premier argument doit être un ID de conteneur ou, comme dans notre cas, un nom de conteneursandbox1fourni auquel nous aimerions créer un lien. Le deuxième argument, égalementsandbox1, est un alias interne utilisé parsandbox2pour résoudre la configuration réseau desandbox1à l’aide du fichierde configuration /etc/hosts:
grep sandbox1 /etc/hosts 172.17.0.41 sandbox1En fonction de la configuration des ports de votre conteneur enfant en cours d’utilisation, vous pouvez également extraire la configuration de
sandbox1à partir des variables d’environnement système. Par exemple:env HOSTNAME=sandbox2 TERM=xterm SANDBOX1_PORT=tcp://172.17.0.37:7555 SANDBOX1_PORT_7555_TCP=tcp://172.17.0.37:7555 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ SANDBOX1_PORT_7555_TCP_ADDR=172.17.0.37 SANDBOX1_PORT_7555_TCP_PROTO=tcp SHLVL=1 HOME=/root SANDBOX1_NAME=/sandbox2/sandbox1 SANDBOX1_PORT_7555_TCP_PORT=7555 _=/usr/bin/envDe cette façon, nous pouvons simplement utiliser l’alias de notre conteneur enfant pour nous y connecter à partir d’un
conteneur parent sandbox2sans avoir besoin de coder en dur son adresse IP :ping -c 1 sandbox1 PING sandbox1 (172.17.0.41): 56 data bytes 64 bytes from 172.17.0.41: icmp_seq=0 ttl=64 time=0.071 ms --- sandbox1 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.071/0.071/0.071/0.000 mset également accéder à tous les ports, ports et services :
nmap -p 22 sandbox1 Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-18 08:58 UTC Nmap scan report for sandbox1 (172.17.0.41) Host is up (0.000090s latency). PORT STATE SERVICE 22/tcp open ssh MAC Address: 02:42:AC:11:00:29 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 0.50 seconds
Nous sommes capables de communiquer du conteneur sandbox1 vers sandbox2, comme en témoigne la commande ping
C’est tout ce qu’il y a à faire. Nos deux conteneurs peuvent désormais communiquer entre eux et des services comme SSH fonctionnent entre eux. Vous pouvez appliquer cette même configuration à deux conteneurs Docker ou plus que vous devez mettre en réseau.
Réflexions finales
Dans ce guide, nous avons vu comment lier des conteneurs Docker entre eux sur un système Linux. Il s’agit d’une tâche relativement basique qui est facilitée par l’option --link de Docker. La possibilité de mettre en réseau deux conteneurs Docker ou plus augmente considérablement la puissance et l’utilité de Docker.
