J'ai une situation pour restreindre l'accès à Internet du conteneur dans le réseau d'équilibrage de charge. par exemple dans cette image ci-dessous
Seul container4 se connecte à Internet; autres trois communiquent uniquement via container4 avec le monde extérieur. Par exemple, si container1 a besoin du support smtp, il transmettra la requête smtp à container4 pour y accéder.
Aucun conteneur autre que container4 ne doit être autorisé à accéder directement à Internet! Cela devrait être appliqué au niveau Docker.
Je crois qu'il sera configurable sur la création d'un réseau docker , quelqu'un peut-il expliquer comment y parvenir?
Création d'un réseau pour accéder à Internet
docker network create --subnet = 172.19.0.0/16 internet
Création d'un réseau pour bloquer l'accès à Internet
docker network create --internal --subnet 10.1.1.0/24 no-internet
Si vous souhaitez connecter un conteneur Docker à Internet
docker network connect internet container-name
Si vous souhaitez bloquer l'accès à Internet
docker network connect no-internet container-name
dans le réseau interne, nous ne pouvons pas exposer les ports pour se connecter au monde extérieur, veuillez vous référer à ceci question pour plus de détails
Comme trouvé ici , je l'ai fait fonctionner avec docker-compose. Enregistrer sous docker-compose.yml
:
version: '3'
services:
outgoing-wont-work:
image: Alpine
networks:
- no-internet
command: ping -c 3 google.com # will crash
internal-will-work:
image: Alpine
networks:
- no-internet
command: ping -c 3 internal-and-external
internal-and-external:
image: Alpine
networks:
- no-internet
- internet
command: ping -c 3 google.com
networks:
no-internet:
driver: bridge
internal: true
internet:
driver: bridge
Exécutez ensuite docker-compose up -d
, docker-compose ps
affichera quelque chose comme ceci après quelques secondes:
Name Command State Ports
----------------------------------------------------------------------------------
dco_inet_internal-and-external_1 ping -c 3 google.com Exit 0
dco_inet_internal-will-work_1 ping -c 3 internal-and-ext ... Exit 0
dco_inet_outgoing-wont-work_1 ping -c 3 google.com Exit 1