J'essaie d'exécuter un conteneur Docker en tant que routeur entre un --internal
réseau Docker privé ( ) et le host
réseau prédéfini . Cela signifie que le conteneur doit avoir deux interfaces réseau: une interface "extérieure", qui peut accéder à toutes les adresses IP des hôtes, et une interface "intérieure", qui sert de passerelle pour les conteneurs du réseau Docker interne.
Le conteneur de routeur lui-même acheminera ensuite le trafic réseau NAT depuis / vers les conteneurs.
Je n'ai pas trouvé de moyen de configurer Docker pour exécuter le conteneur avec ces deux interfaces. Le plus proche que j'ai pu obtenir est d'avoir deux bridge
interfaces assignées, ce qui n'est pas exactement ce dont j'ai besoin.
Une tentative de connexion manuelle entraîne une erreur:
# docker network connect host root_router_1
Error response from daemon: Container cannot be disconnected from host network or connected to host network
Quelqu'un peut-il me montrer comment y parvenir, de préférence même avec Docker Compose?
la source
Réponses:
Selon ce Q&A sur github :
la source
network_mode
ne fonctionne pas si vous avez besoin de quelque chose connecté à un réseau interne et au réseau hôte. Il semble insensé que nous ne puissions pas trouver une bonne solution claire à ce problème.Docker ne permet pas de connecter un conteneur au réseau hôte et à tout autre réseau de pont Docker en même temps. Je vais essayer d'illustrer la raison avec un exemple:
Avec la configuration ci-dessus, je suppose que le réseau hôte est visible depuis C2, et je suppose que c'est la raison pour laquelle Docker nous empêche automatiquement d'exposer involontairement le réseau hôte à des conteneurs non spécifiés par l'hôte.
Cela étant dit, si nous avons un ensemble de conteneurs, et que nous voulons qu'ils soient tous interconnectés, avec un seul conteneur ayant accès au réseau hôte, mon approche serait:
EDIT: Nous aurions encore à adapter les politiques iptables de telle manière que C1 puisse être atteint à partir du reste des conteneurs (voir https://docs.docker.com/network/iptables/ )
la source