Bridge networking
Quelques exercices sur Bridge networking avec Docker.
Exercices
Lancer la stack docker-compose.yml. Par défaut, un réseau est créé et attaché à chaque container.
- Identifier le réseau
bridgecréé et utilisé par la stack par défaut- Utiliser la CLI Docker:
docker network --help
- Utiliser la CLI Docker:
- Identifier l'ensemble des réseaux actuellement existant et le Driver utilisé par chacun
- Inspecter le réseau utilisé par la stack Compose et:
- Trouver la liste des containers associés au réseau
- Identifier le subnet utilisé par le réseau
Quid de l'isolation des réseaux Bridge? Par défaut, les containers sur un même réseau sont joignables par leur nom (i.e. le container vote est joignable via le hostname vote). Docker effectue une résolution DNS interne.
Isolons les containers de notre stack:
- Configurer les réseaux
vote-netetresult-net - Isoler
vote,redis,workerdans le réseauvote-net - Isoler
worker,dbetresultdans le réseauresult-net - Note: le container
workersera dans 2 réseaux:vote-netetresult-net
Seul worker pourra communiquer avec chaque container. vote / redis et db / result seront mutuellement isolés dans leurs réseaux respectifs.
Vérifier la non-connectivité entre le container vote et result
- Lancer une session shell sur
voteet essayer de joindreresultdocker exec -it vote sh # Need curl and/or ping ? # Use 'apk add curl iputils-ping' # or 'apt update && apt install -y curl iputils-ping' # Try to connect $ curl result # Check DNS resolution $ getent hosts result $ getent hosts worker
Docker peut aussi connecter et déconnecter des containers d'un réseau à la volée (sans besoin de redémarrer ou recréer un container).
- Connecter le container
votemanuellement au réseauresult-net - Vérifier à nouveau la connectivité
- Déconnecter le container
votederesult-net
Configuration réseau customisée avec Docker Compose
- Ajouter un réseau bridge
my-bridgedansdocker-compose.ymlet configurer chaque container pour utiliser ce réseau - Modifier la configuration de
my-bridgepour:- Forcer l'utilisation du driver réseau
bridge - Affecter un nom spécifique
named-bridge - Utiliser le subnet
172.42.0.0/16
- Forcer l'utilisation du driver réseau
- Appliquer les configurations et inspecter le réseau
named-bridgepour vérifier les configurations
Il est aussi possible d'utiliser un réseau déjà existant par ailleurs:
- Créer un réseau Bridge nommé
my-external-networkdocker network --help
- Configurer les services pour utiliser ce réseau déjà existant et appliquer les configurations