Escriu per cercar…

Xarxa

Els contenidors es poden connectar i comunicar-se entre ells o altres serveis mitjançant xarxes.

Introducció

Docker utilitza una interfície virtual que té el nom de docker0 que es va crear quan vas instal.lar docker.

shell
$ ip --brief addr
lo               UNKNOWN        127.0.0.1/8 ::1/128
enp1s0           UP             192.168.123.6/22 fe80::b4a1:54f4:7454:d2fd/64
enp2s0           UP             10.2.76.37/16 fe80::d18f:22b8:b29b:935c/64
docker0          DOWN           172.17.0.1/16

Quan crees un contenidor aquest es connecta a aquesta xarxa:

shell
$ docker run --rm -d --name apache httpd
d16aea391c3efe464b3defb1aaf64e6d3e6a8321f5f0d9984e2d6104588d5ece
$ docker exec apache cat /etc/hosts
127.0.0.1       localhost
...
172.17.0.2      5311e760a9b7

En aquest cas el contenidor té l’adreça 172.17.0.2 de la xarxa 172.17.0.1/16 que pertany a la interfície virtual docker0.

Si intentes conectar-te amb localhost no pots, però si et connectes directament a la IP del contenidor si que pots:

shell
$ curl localhost
curl: (7) Failed to connect to localhost port 80 after 1 ms: S’ha refusat la connexió
$ curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>

Quan crees un contenidor a aquest se li pot assignar qualsevol IP de la xarxa docker0.

És per aquest motiu que quan arrenquem un servidor web fem un port forward per poder accedir al servidor des de l’adreça localhost amb l’opció -p 80:80:

shell
$ docker stop apache
apache
$ docker run --rm -d --name apache -p 80:80 httpd
3f74091860626a79951137c8734a38eb99f68337fbb8bc9f636b416e545d3e17

Estàs llegint una vista prèvia.

Inicia sessió per llegir l'article complet. Qualsevol compte obre 4 articles gratuïts al mes; l'alumnat i el professorat llegeixen les pàgines del seu curs sense límit.

Inicia sessió