Det er nemt at gøre en Docker-hostet tjeneste kun tilgængelig for andre containere på den samme vært. Hvis du:
- Indstil serveren til at binde til eller lytte til 0.0.0.0 eller ::0 (alle adresser);
- Opret et ikke-standard Docker-netværk (Docker Compose vil gøre dette automatisk);
- Start servercontaineren og eventuelle tilknyttede klientcontainere på det Docker-netværk (Docker Compose vil gøre dette som standard); og
- Gør det ikke sæt en
docker run -p
eller Docker Composeports:
mulighed
så kan klientbeholderne nå serverbeholderen ved at bruge dens beholdernavn som værtsnavn, men ikke-Docker-processer på værten og andre værter kan ikke nå serveren.
Hvis din vært har flere netværksgrænseflader, og binding til en af dem ville gøre en tjeneste "privat", så kan du gøre det samme med docker run -p
. Hvis din vært har den offentlige IP-adresse 10.20.30.40/16 og også den private IP-adresse 192.168.144.128/24, så docker run -p 192.168.144.128:6379:6379
vil gøre det tilgængeligt for det private netværk (og andre Docker-containere som ovenfor), men ikke det offentlige netværk. (Selve serveren inde i containeren skal stadig bindes til 0.0.0.0.)
Hvis du ellers har brug for, at serveren skal være synlig uden for værten, men kun for nogle IP-adresser, tror jeg, du er nede på iptables
magi, der ikke er hjemmehørende i Docker.