Si të aksesoni portet në host nga një kontejner Docker


Nëse jeni duke u lidhur me botën e jashtme, Docker sillet sikur kërkesa të vinte nga makina pritës. Por nëse doni të përdorni proceset që janë duke u ekzekutuar në host, muri juaj i zjarrit mund të ketë nevojë për disa konfigurime shtesë.

Zgjidhja: Shtoni një rregull të murit të zjarrit për 172.18.0.0/16

Nëse sapo keni provuar të përdorni një proces që funksionon në makinën pritës si një shërbim HTTP, mund të jeni bllokuar. Kjo ndodh sepse edhe pse kontejnerët Docker funksionojnë në host, ata përdorin disa rrjete të veçanta nën kapuç për t'i mbajtur ato të ndara logjikisht, dhe për shkak të kësaj ata kanë adresa IP të ndryshme.

Mund ta shihni këtë kur ekzekutoni ifconfig, do të shihni ndërfaqen tuaj standarde të rrjetit, por edhe ndërfaqen docker0 . Si parazgjedhje, Docker përdor bllokun 172.18.0.0/16 për të ndarë adresat IP të kontejnerit.

Rregullimi është shumë i thjeshtë—hapni këtë gamë portash në murin tuaj të zjarrit. Kërkesat nga diapazoni i IP që përdor Docker ka të ngjarë të bllokohen. Është një varg adresash IP private, kështu që ka rrezik minimal për ta hapur atë. Për UFW, kjo do të ishte:

sudo ufw allow from 172.18.0.0/24

Përcaktimi opsional i një porti për t'u hapur:

sudo ufw allow from 172.18.0.0/24 to any port 9200

Për iptables, kjo do të ishte:

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

Për shërbimet e menaxhuara të pritjes si AWS, mund të mos keni nevojë të ndryshoni asgjë - grupet e sigurisë janë mure zjarri të rrjetit që qëndrojnë përpara instancave dhe nuk duhet të ndikojnë në trafikun e brendshëm.