Hur man får åtkomst till portar på värden från en dockningsbehållare

0
30

Om du nätverkar med omvärlden, beter sig Docker som om begäran kom från värddatorn. Men om du vill komma åt processer som körs på värden kan din brandvägg behöva lite extra konfiguration.

Lösningen: Lägg till en brandväggsregel för 172.18. .0.0/16

Om du precis har försökt komma åt en process som körs på värddatorn som en HTTP-tjänst, kan du ha blivit blockerad. Detta beror på att även om Docker-containrar körs på värden, använder de vissa speciella nätverk under huven för att hålla dem logiskt åtskilda, och på grund av det har de olika IP-adresser.

Du kan se detta när du kör ifconfig , ser du ditt vanliga nätverksgränssnitt, men även docker0-gränssnittet. Som standard använder Docker blocket 172.18.0.0/16 för att tilldela containers IP-adresser.

Lösningen är mycket enkel—öppna detta portintervall i din brandvägg. Förfrågningar från IP-intervallet som Docker använder blockeras sannolikt. Det är ett privat IP-adressintervall, så det finns minimal risk med att ha det öppet. För UFW skulle det vara:

sudo ufw allow från 172.18.0.0/24

Valfritt ange en port som ska öppnas:

sudo ufw allow från 172.18.0.0/24 till valfri port 9200

För iptables skulle det vara:

iptables –append INPUT –protocol tcp –src 172.18.0.0/24 –jump DROP

För hanterade värdtjänster som AWS, kanske inte behöver ändra någonting—säkerhetsgrupper är nätverksbrandväggar som sitter framför instanser och bör inte påverka intern trafik.