Det är enkelt att göra en Docker-värd tjänst endast tillgänglig för andra behållare på samma värd. Om du:
- Ställ in servern att binda till eller lyssna på 0.0.0.0 eller ::0 (alla adresser);
- Skapa ett icke-standard Docker-nätverk (Docker Compose gör detta automatiskt);
- Starta serverbehållaren och eventuella associerade klientbehållare på det Docker-nätverket (Docker Compose gör detta som standard); och
- Gör inte ställ in en
docker run -p
eller Docker Composeports:
alternativ
sedan kan klientbehållarna nå serverbehållaren med dess behållarnamn som ett värdnamn, men icke-Docker-processer på värden och andra värdar kan inte nå servern.
Om din värd har flera nätverksgränssnitt och bindning till ett av dessa skulle göra en tjänst "privat" så kan du göra samma sak med docker run -p
. Om din värd har offentlig IP-adress 10.20.30.40/16 och även privat IP-adress 192.168.144.128/24, då docker run -p 192.168.144.128:6379:6379
kommer att göra det tillgängligt för det privata nätverket (och andra Docker-behållare enligt ovan) men inte det offentliga nätverket. (Själva servern, inuti behållaren, måste fortfarande binda till 0.0.0.0.)
Om du annars behöver att servern ska vara synlig utanför värddatorn, men bara för vissa IP-adresser, tror jag att du är nere på iptables
magi som inte är inbyggt i Docker.