Al igual que en las maquinas virtuales, los contenedores pueden conectarse entre ellos y a través del host anfitrión para crear redes internas y/o publicar servicios.
Para ilustrar como funcionan los puertos, creemos un contender de ubuntu con los puertos 55678 y 55679 abiertos.
docker run --rm -ti -p 55678:55678 -p 55679:55679 --name echo-server ubuntu:14.04 bash
Este comando abre los mencionados puertos tanto de entrada como de salida, para ilustrar lo que estamos haciendo usemos el comando Netcat.

La terminal de la derecha es el contenedor que es quien inicia Netcat. Mientras tanto, lo escrito en la parte superior izquierda aparece en la terminal inferior por la conexión que se hace a través del contenedor.
Este escaneo es estático ya que establecimos los puertos de entrada y de salida, es posible establecer unicamente los de entrada y los de salida serán dinámicos.
[tusysadmin@local ~]$ docker run --rm -ti -p 55678 -p 55679 --name echo-server ubuntu:14.04 bash
Para saber los puertos utilizados usamos la opción port.
[tusysadmin@local ~]$ docker port echo-server
55679/tcp -> 0.0.0.0:49153
55679/tcp -> :::49153
55678/tcp -> 0.0.0.0:49154
55678/tcp -> :::49154
En este caso los puertos a los que tenemos que hacer la conexión son 49153 y 49154.

Para saber las redes con las que contamos.
[tusysadmin@local ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2acddd4abdcd bridge bridge local
8e60720c5590 host host local
b6c7de3fbd09 none null local
Estas tres redes son creadas al momento por default al momento de iniciar el servicio docker; sino se especifica lo contrario la red bridge es usada por todos los contenedores, host es para aislar contenedores a una red y none es para especificar que los contenedores no tienen red.
Crearemos un nueva red para conectar algunos contenedores.
[tusysadmin@local ~]$ docker network create taller
51ba550801cff8cf879630bb1925266d9ea45da375d6336c73f2b6e9a779926b
Creamos dos contenedores conectados a esa red.
[tusysadmin@local ~]$ docker run --rm -ti --network taller --name front ubuntu:14.04 bash
[tusysadmin@local ~]$ docker run --rm -ti --network taller --name back ubuntu:14.04 bash
Como se observa en estas imágenes, existe una conexión entre contenedores solo con usar la misma red al momento de la declaración y es a través del nombre que pueden conectarse. Hagamos la cosas mas interesantes agregando un nueva red que solo pueda conectarse al back.
[tusysadmin@local ~]$ docker network create backsonly
a8f856b310666d071249bef328df3bbfbd2fa3e183923320cbb2425713f12720
[tusysadmin@local ~]$ docker network connect backsonly back
Crearemos un tercer contenedor que solo esté conectado a esta red el cual podrá hacer ping a back pero no a front.
El contenedor back por estar en ambas redes puede conectarse a ambos contenedores, pero entre ellos no es posible la conexión.
Deja una respuesta