Recherche de site Web

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

  1. 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/bash
    

    Il 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.

  2. La commande Linux suivante déploiera un deuxième conteneur, cette fois un conteneur docker parent nommé sandbox2. Nous utiliserons également un indicateur --link qui créera une relation parent-enfant avec le conteneur sandbox1 précédemment déployé. De plus, l’indicateur --link permettra au conteneur parent d’accéder à tous les services s’exécutant sur le conteneur sandbox1 via 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/bash
    

    La commande docker ci-dessus utilise l’indicateur --link qui 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 conteneur sandbox1 fourni auquel nous aimerions créer un lien. Le deuxième argument, également sandbox1, est un alias interne utilisé par sandbox2 pour résoudre la configuration réseau de sandbox1 à l’aide du fichier de configuration /etc/hosts :
     

    
    grep sandbox1 /etc/hosts
    172.17.0.41     sandbox1
    


  3. En 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/env
    
  4. De cette façon, nous pouvons simplement utiliser l’alias de notre conteneur enfant pour nous y connecter à partir d’un conteneur parent sandbox2 sans 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 ms
    

    et é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.

Articles connexes: