Het is eenvoudig om een door Docker gehoste service alleen toegankelijk te maken voor andere containers op dezelfde host. Als u:
- Stel de server in om te binden aan of te luisteren op 0.0.0.0 of ::0 (alle adressen);
- Maak een niet-standaard Docker-netwerk (Docker Compose doet dit automatisch);
- Lanceer de servercontainer en alle bijbehorende clientcontainers op dat Docker-netwerk (Docker Compose doet dit standaard); en
- Doe niet stel een
docker run -p
in of Docker Composeports:
optie
dan kunnen de clientcontainers de servercontainer bereiken met de containernaam als hostnaam, maar niet-Docker-processen op de host en andere hosts kunnen de server niet bereiken.
Als uw host meerdere netwerkinterfaces heeft en binding aan een van die interfaces een service "privé" zou maken, dan kunt u hetzelfde doen met docker run -p
. Als uw host een openbaar IP-adres 10.20.30.40/16 heeft en ook een privé IP-adres 192.168.144.128/24, dan docker run -p 192.168.144.128:6379:6379
zal het beschikbaar maken voor het particuliere netwerk (en andere Docker-containers zoals hierboven), maar niet voor het openbare netwerk. (De server zelf, in de container, moet nog binden aan 0.0.0.0.)
Als je de server anders nodig hebt om off-host zichtbaar te zijn, maar alleen voor sommige IP-adressen, denk ik dat je te maken hebt met iptables
magie die niet eigen is aan Docker.