Zkuste změnit 127.0.0.1:6379
na redis:6379
.
Přestože Redis běží, váš python
kontejner s ním není schopen komunikovat; je to proto, že se pokouší připojit k 127.0.0.1:6379
, ale z pohledu kontejneru tam nic neběží. To může být při ladění trochu frustrující, ale je to o něco snazší, pokud budete mít na paměti, že kontejnery mají svůj vlastní síťový jmenný prostor. Výsledkem je python
localhost !=redis
's localhost !=localhost
vašeho hostitelského počítače .
Naštěstí je snadné připojit kontejnery, které sdílejí stejný most, a ve výchozím nastavení docker-compose
vytvoří jedinou mostovou síť a připojí k nim všechny vaše kontejnery a poskytne potřebné DNS, aby se mohli navzájem objevit. Výsledkem je, že komunikace mezi kontejnery funguje jednoduše pomocí názvu služby.
Poznámka:Je možné spouštět kontejnery ve stejném jmenném prostoru a spouštět v nich v jmenném prostoru hostitele pomocí --net=container:<container-id>
nebo --net=host
vlajka. To je zvláště užitečné pro spouštění ladicích nástrojů v kontejneru a jejich připojení k síťovému jmennému prostoru jiného kontejneru nebo hostitele, např. pomocí netshoot, abyste viděli, jaké porty naslouchají v kontejneru (exponované nebo ne), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn
.