Probeer 127.0.0.1:6379
te wijzigen naar redis:6379
.
Hoewel Redis actief is, is uw python
container kan er niet mee communiceren; dit komt omdat het verbinding probeert te maken met 127.0.0.1:6379
, maar vanuit het perspectief van de container loopt daar niets. Dit kan een beetje frustrerend zijn om te debuggen, maar het is een beetje makkelijker als je er rekening mee houdt dat containers hun eigen netwerknaamruimte krijgen. Als resultaat, python
's localhost !=redis
's localhost !=de localhost
van uw hostmachine .
Gelukkig is het eenvoudig om containers te verbinden die dezelfde bridge delen, en standaard docker-compose
creëert een enkel brugnetwerk en verbindt al uw containers ermee, waardoor ze de nodige DNS krijgen om elkaar te ontdekken. Als gevolg hiervan werkt container-naar-container-communicatie eenvoudig door de servicenaam te gebruiken.
Let op:het is mogelijk om containers in dezelfde naamruimte uit te voeren en erin te draaien in de naamruimte van de host, via de --net=container:<container-id>
of --net=host
vlag. Dit is vooral handig voor het uitvoeren van foutopsporingsprogramma's in een container en deze te koppelen aan de netwerknaamruimte van een andere container of de host, b.v. gebruik netshoot om te zien welke poorten binnen de container luisteren (blootgesteld of niet), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn
.