Je snadné zpřístupnit službu hostovanou Dockerem pouze pro jiné kontejnery na stejném hostiteli. Pokud:
- Nastavte server tak, aby se vázal nebo naslouchal na 0.0.0.0 nebo ::0 (všechny adresy);
- Vytvořte jinou než výchozí síť Docker (Docker Compose to provede automaticky);
- Spusťte serverový kontejner a všechny přidružené klientské kontejnery v dané síti Docker (ve výchozím nastavení to provede Docker Compose); a
- Ne ne nastavte
docker run -p
nebo Docker Composeports:
možnost
pak se klientské kontejnery mohou dostat ke kontejneru serveru pomocí jeho názvu kontejneru jako názvu hostitele, ale procesy mimo Docker na hostiteli a dalších hostitelích se k serveru nedostanou.
Pokud má váš hostitel více síťových rozhraní a navázání na jedno z nich způsobí, že služba bude „soukromá“, můžete totéž udělat pomocí docker run -p
. Pokud má váš hostitel veřejnou IP adresu 10.20.30.40/16 a také soukromou IP adresu 192.168.144.128/24, pak docker run -p 192.168.144.128:6379:6379
zpřístupní je privátní síti (a dalším kontejnerům Docker, jak je uvedeno výše), ale ne veřejné síti. (Samotný server uvnitř kontejneru se stále potřebuje svázat s 0.0.0.0.)
Pokud jinak potřebujete, aby byl server viditelný mimo hostitele, ale pouze pro některé IP adresy, myslím, že jste na iptables
magie, která není původní pro Docker.