Networking

Compose

Nota: (Docker Compose configura una sola red para su aplicación de manera predeterminada, agregando cada contenedor para un servicio a la red predeterminada. Los contenedores en una sola red pueden alcanzar y descubrir cualquier otro contenedor en la red).

Compose (Networking)

-. Compose crea automáticamente una red para la aplicación. La red de su aplicación recibe un nombre basado en el nombre del proyecto, que se basa en el nombre de la carpeta que hemos situado el proyecto. Puede anular el nombre del proyecto con la –project-name bandera (flag) o la COMPOSE_PROJECT_NAME variable de entorno (environment variable).

Nota: Usare para visualizar el proceso de creación de la red-compose el que nos ofrece Docker-Docs. Creando la carpeta myapp y el docker-compose.yml.

Creamos la carpeta del proyecto:

  • In: root@juan-SATELLITE-C55-C-1JM:/# mkdir myapp && cd myapp

Arrancar nano:

  • In: root@juan-SATELLITE-C55-C-1JM:/myapp# nano docker-compose.yml

Pego el siguiente texto:

  • version: «3.9»
  • services:
  •    web:
  •       build: .
  •       ports:
  •          – «8000:8000»
  •    db:
  •       image: postgres
  •       ports:
  •          – «8001:5432»

Iniciar la aplicación ejecutando:

  • In: root@juan-SATELLITE-C55-C-1JM:/myapp# docker-compose up

Al ejecutar (docker-compose up):

  • Se crea una red llamada myapp_default.
  • Se crea un contenedor nombre web y se une a la red myapp_default bajo el nombre web.
  • Se crea un contenedor nombre db y se une a la red myapp_default bajo el nombre db.

-. Cada contenedor ahora puede buscar el nombre de host web y db recuperar la dirección IP del contenedor apropiado. La web utiliza el código de la aplicación podría conectarse a la URL postgres://db:5432 y comenzar a usar la base de datos de Postgres.

-. Es importante tener en cuenta la distinción entre HOST_PORT y CONTAINER_PORT. En el caso anterior, para db, el HOST_PORT es 8001 y el puerto del contenedor es 5432 (por defecto de postgres). La comunicación de servicio a servicio en red utiliza el CONTAINER_PORT. Cuando HOST_PORT se define, el servicio también es accesible fuera del enjambre.

-. Dentro del contenedor web, su cadena de conexión db se vería como postgres://db:5432, y desde la máquina host, la cadena de conexión se vería como postgres://{DOCKER_IP}:8001.

 

Multi-host networking

-. Al implementar una aplicación Compose en un Docker Engine con el modo Swarm habilitado , puede utilizar el overlay controlador integrado para habilitar la comunicación entre múltiples hosts.

Nota: Network-Overlay una «red superpuesta» es una red virtual que se ejecuta sobre una red diferente, la que nos ocupa Doker-Network-Overlay conecta varios demonios Docker para crear una red virtual plana entre hosts donde puede establecer comunicación entre un service-swarm y un contenedor independiente, o entre dos contenedores independientes en diferentes demonios Docker. Esta estrategia elimina la necesidad de realizar enrutamiento a nivel de sistema operativo entre estos contenedores.

 

Pre-Existing network

-. Si desea que sus contenedores se unan a una red preexistente, utilice la external opción

El testo para pegar en nano:

  •    services:
  • # …
  •       networks:
  •          default:
  •             name: my-pre-existing-network
  •             external: true

Nota: En lugar de intentar crear una red llamada myapp_default, Compose busca una red llamada my-pre-existing-networky conecta los contenedores de su aplicación a ella.

 

Recopilando:

Las Redes que utiliza Docker-Compose para que se comuniquen los contenedores que Compose pone en juego de un proyecto indeterminado.

 

  • Referencias: Entorno-Moreluz
  • Referencias: docs.docker