Formation Devops | Formation Docker : 34- Réseau :Les links Docker

www.itgalaxy.io 

L’installation de Docker crée par défaut un réseau nommé bridge (interface Docker0).

Il est utilisé par les conteneurs si aucun réseau n’est spécifié au lancement (option –network=mon_reseau)

une adresse IP prive ainsi qu’une adresse MAC sont assignées au bridge , configuration des tables de routage (route
et iptables).

Par défaut, tous les conteneurs peuvent communiquer entre eux sur le réseau bridge.
Pour plus de sécurité, il est possible de désactiver ce comportement (option DOCKER_OPTS="-icc=false" de la configuration de daemon).

$ docker network ls

NETWORK ID NAME DRIVER SCOPE
8dd02d7ad16f bridge bridge local
72244137afae host host local
f7ab4027acf8 none null local

$ docker network inspect bridge
{
“Name”: “bridge”,
“Id”:
“8dd02d7ad16f9e47a774f0ee5a652a606ecc23bcc15c126d3e6fbf6fd1c3465c”,
“Created”: “2017- 12 - 05T16:44:54.821533922+01:00”,
“Scope”: “local”,
“Driver”: “bridge”,
“EnableIPv6”: false,
“IPAM”: {
“Driver”: “default”,
“Options”: null,
“Config”: [
{
“Subnet”: “172.17.0.0/16”,
“Gateway”: “172.17.0.1”
}

Les conteneurs utilisent une adresse IP fournie par le daemon Docker (réseau privé non routable: 172.17.0.0/16, gateway: 172.17.0.1).

Sous linux, Docker utilise netfilter(iptables) pour implémenter les fonctions de NAT qui permettent aux conteneurs de communiquer avec l’extérieur en utilisant
l’adresse IP de l’hôte et les fonctions de DNAT pour joindre les conteneurs depuis l’extérieur en utilisant un port particulier.

$ docker run -d -p 8006:80 –name test_port nginx

Ici l’option -p permet d’exposer le port 80 du conteneur et de joindre le conteneur sur le port 8006 et l’adresse IP
de l’hôte

Faire communiquer deux conteneurs (option : –link)

On démarre un conteneur avec une databaseMySQL

$ docker run –name mysql -e MYSQL_ROOT_PASSWORD=bonjour -d mysql:5.7

L’option -e (dans l’exemple ci-dessus –e MYSQL_ROOT_PASSWORD=bonjour ) permet de passer des variables d’environnement au conteneur (ici on définit le passwordroot de la base de données).

On démarre ensuite un conteneur avec l’interface PHPmyadmin, qui permet d’administrer une base de données MySQL.

L’option –linkpermet de renseigner le fichier host du conteneur phpmyadminpour qu’il puisse se connecter à la base de données.

$ docker run –name phpmyadmin-d –linkmysql:db-p 8080:80 phpmyadmin/

On consulte le fichier hosts du conteneur phpmyadmin:

$ docker execphpmyadmincat /etc/hosts
cat /etc/hosts
127.0.0.1 localhost
172.17.0.3 dbd72489c44026 mysql
172.17.0.4 7d5ed10b026e

Ici on constate que les alias dbet mysqlpointent vers l’ip172.17.0.3 du serveur MySQL

$ docker inspect mysql | grep IP

“LinkLocalIPv6Address”: “”,
“LinkLocalIPv6PrefixLen”: 0,
“SecondaryIPAddresses”: null,
“SecondaryIPv6Addresses”: null,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“IPAddress”: “172.17.0.3”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“IPAMConfig”: null,
“IPAddress”: “172.17.0.3”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,

La commande inspectpermet de confirmer l’adresse IP du conteneur MySQL.
On teste depuis un navigateur avec l’URL : http://:8080 l’utilisation de phpmyadmin pour administrer la base.






1. Nous contactez


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io