Nico
10 Déc
Quand on veut déployer un container docker, rien de plus simple, un docker run suffit à rendre le container disponible.
Mais si vous n’avez pas réfléchi avant à l’architecture réseau, vous faites communiquer vos containers dans le réseau par défaut, ce qui n’est pas forcément une bonne idée d’un point de vue sécurité.
Par défaut, Docker attache les containers au réseau « bridge » qui a été créé à l’installation de Docker.
Il s’agit donc d’un pont qu’on retrouve côté machine hôte, côté Docker et côté conteneur :
# Côté hôte : $ ip -4 addr ... 6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever ... # Côté Docker : $ docker network ls NETWORK ID NAME DRIVER SCOPE 7b60ae452056 bridge bridge local # Côté container : root@6f82301ed59b:/# ip -4 a 9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link-netnsid 0 inet 172.17.0.2/16 scope global eth0 valid_lft forever preferred_lft forever
Les hôtes dans ce type de réseau sont attachés à un commutateur virtuel (dockerX) et sont NATés de sorte qu’ils sont dans un réseau IP isolé et joignable de l’extérieur en exposant un port.
Dans ce cas, le conteneur n’est pas attaché au réseau, il n’a pas d’autre adresse IP que localhost/127.0.0.1.
Le conteneur est dans ce cas directement lié à la carte réseau de l’hôte. Il ne faut jamais utiliser ce genre de configuration en production car il n’y a pas d’isolation réseau.
L’architecture des réseaux de conteneurs doit ressembler à celle des réseaux en général :
Séparation logique de tous types de réseau (réseau de dév, réseau de prod, DMZ publiques, privées, …).
Il n’y a pas de limitations dans les réseaux Docker et ils sont NATés par l’hôte donc n’hésitez pas à en créer autant que de besoin.
Créer un réseau par pile logicielle, par exemple, un Nextcloud hébergé en Docker pourrait ressembler à ça :
Hello, je trouve ton article plutôt bon (et correcte)
Par contre, j’aurais aimé voir un docker-compose montrant l’exemple que tu mets en schéma, ou alors des commandes Docker 🙂
A+ et continue comme ça !
Docker fournit une documentation au sujet des réseaux avec Compose, notamment comment on peut préciser à quel réseau doit être connecté un container :
https://docs.docker.com/compose/networking/#specify-custom-networks