Saltar al pie de página
USANDO IRONSECUREDOC

Red Docker Compose (Cómo funciona para desarrolladores)

¿Qué es Docker ?

Docker es una plataforma de código abierto que utiliza conceptos basados en contenedores para automatizar la implementación y escalado de aplicaciones dentro de contenedores portátiles y ligeros. En pocas palabras, un contenedor Docker reúne todo el código de la aplicación y sus dependencias en una sola unidad, consistente en todos los entornos, desde la computadora portátil del desarrollador hasta el servidor de pruebas o los servidores en la nube de producción.

Docker Compose Network (Cómo Funciona para Desarrolladores): Figura 1

Los contenedores no se comportan como las máquinas virtuales tradicionales (VM) porque comparten el núcleo del sistema operativo del sistema host. Por lo tanto, los contenedores son mucho más eficientes y más rápidos de iniciar. De hecho, los contenedores de Docker garantizan un comportamiento consistente en todas las etapas del ciclo de desarrollo.

De hecho, las imágenes de Docker son plantillas para descripciones de contenedores que contienen el entorno de la aplicación. Este conjunto también incluye herramientas para gestionar los ciclos de vida de los contenedores. Un ejemplo es Docker Compose, que puedes usar para orquestar aplicaciones que constan de múltiples contenedores. Luego está Docker Hub, un registro para compartir imágenes.

¿Qué son las redes Docker Compose?

Las redes de Docker Compose permiten que los servicios que se ejecutan en una aplicación Docker Compose se comuniquen entre sí dentro de los mismos entornos encapsulados. Si defines más de un servicio en un archivo docker-compose.yml, Docker Compose crea automáticamente una red predeterminada para que esos servicios puedan comunicarse entre sí utilizando los nombres de los servicios como nombres de host. Esencialmente, permite al usuario definir su propia red y múltiples servicios con la red creada.

Red de Puente Predeterminada: Si no defines ninguna red para tus contenedores al ejecutar docker-compose up, Docker crea automáticamente una red de puente. Todos los contenedores pueden comunicarse entre sí con su nombre de servicio como nombre de host en esta red de controlador predeterminado.

Redes Personalizadas: Con estas opciones, los usuarios pueden definir una o dos redes personalizadas e incluso más como redes definidas por el usuario. Puedes definir redes personalizadas dentro de tu puerto de contenedor y archivo docker-compose.yml. Al asignar servicios a estas redes, controlas cómo pueden comunicarse los contenedores:

  • Las redes internas aíslan servicios de otros.
  • Múltiples redes permiten que algunos servicios se comuniquen entre sí mientras niegan a otros dicho acceso.

Descubrimiento de Servicios: Cada servicio obtiene un nombre de host igual a su nombre en la configuración. Es decir, puedes referirte a otro servicio en un contenedor usando el nombre del otro servicio. Por ejemplo, en el servicio web, usarías db para referirte a la IP del contenedor de base de datos.

Modos de Red: También puedes configurar modos de red para usar host, bridge o none para servicios. El más comúnmente utilizado es el bridge, que aísla el tráfico del contenedor.

¿Qué son los controladores de red de Docker?

Los drivers de red de Docker describen las conexiones y comunicación de los contenedores entre sí y con otros contenedores y sistemas. Hay varios casos de uso, y los controladores de red se pueden aplicar a estos casos, cada uno proporcionando un nivel diferente de aislamiento, conectividad y rendimiento. Revisaremos cada controlador de red y explicaremos su uso.

Tipos de controladores de red de Docker

Puente (predeterminado)

Las redes internas de docker permiten que un contenedor se comunique con otros basados en un solo host. Si lanzas contenedores sin especificar una red, Docker utiliza la red de puente predeterminada.

# Create a custom bridge network
docker network create --driver bridge my_bridge_network

# Run containers and connect to the custom network
docker run -d --name container1 --network my_bridge_network busybox sleep 3600
docker run -d --name container2 --network my_bridge_network busybox sleep 3600
# Create a custom bridge network
docker network create --driver bridge my_bridge_network

# Run containers and connect to the custom network
docker run -d --name container1 --network my_bridge_network busybox sleep 3600
docker run -d --name container2 --network my_bridge_network busybox sleep 3600
SHELL

Aquí, los nombres de los servicios pueden ser utilizados para comunicarse, como ping container1 y container2.

Host

Con el controlador host, el contenedor comparte directamente el stack de red del host, por lo que un contenedor no obtiene su propio aislamiento de red personalizado.

# Run a container using the host network
docker run -d --network host nginx
# Run a container using the host network
docker run -d --network host nginx
SHELL

El contenedor de NGINX ahora comparte las interfaces de red e IP del host, evitando así el aislamiento de red.

Overlay

Conecta contenedores a través de varios hosts y se usa principalmente en entornos de Docker Swarm o Kubernetes, conectando máquinas físicas o virtuales a través de contenedores para comunicarse de forma segura utilizando una red virtual.

# Create an overlay network for use in a Docker Swarm cluster
docker network create -d overlay my_overlay_network

# Deploy a service in the Swarm cluster
docker service create --name web --network my_overlay_network nginx
# Create an overlay network for use in a Docker Swarm cluster
docker network create -d overlay my_overlay_network

# Deploy a service in the Swarm cluster
docker service create --name web --network my_overlay_network nginx
SHELL

Esto crea un servicio en un clúster de Swarm que se puede extender a múltiples hosts de Docker.

None

Este controlador none desactiva la red del contenedor. Este contenedor está aislado de cualquier tipo de comunicación de red externa.

# Run a container with no network
docker run -d --network none busybox sleep 3600
# Run a container with no network
docker run -d --network none busybox sleep 3600
SHELL

El contenedor busybox no tendrá acceso a Internet y no podrá enviar llamadas a las propias redes de otros contenedores o al mundo exterior.

Macvlan

El controlador Macvlan permite que los contenedores aparezcan como dispositivos físicos en la red con sus propias direcciones MAC, por lo que pueden acceder directamente a la red física.

# Create a Macvlan network
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 macvlan_network

# Run a container on the Macvlan network
docker run -d --network macvlan_network busybox sleep 3600
# Create a Macvlan network
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 macvlan_network

# Run a container on the Macvlan network
docker run -d --network macvlan_network busybox sleep 3600
SHELL

IPvlan

El controlador IPvlan es similar a Macvlan pero se centra en asignar direcciones IP en lugar de depender de la Capa 2 (direcciones MAC). Permite que múltiples contenedores compartan la misma interfaz de red.

# Create an IPvlan network
docker network create -d ipvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 ipvlan_network

# Run a container on the IPvlan network
docker run -d --network ipvlan_network busybox sleep 3600
# Create an IPvlan network
docker network create -d ipvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 ipvlan_network

# Run a container on the IPvlan network
docker run -d --network ipvlan_network busybox sleep 3600
SHELL

Compartirá la interfaz Ethernet de Capa 2 del host con la red pero tendrá una dirección IP diferente.

Complementos personalizados

Los plugins personalizados de Docker son drivers de red desarrollados por terceros o usuarios que ofrecen características elaboradas sobre capacidades de red que son más de lo que Docker puede ofrecer como predeterminado. Los plugins Docker de terceros pueden integrarse con frameworks de soluciones de red externas como Redes Definidas por Software, mejorando así capacidades como seguridad, escalabilidad, así como redes multi-host. Docker proporciona a los desarrolladores y proveedores una arquitectura versátil para los plugins de red, permitiendo su instalación y uso de la misma manera que el controlador nativo.

IronSecureDoc

IronSecureDoc para Docker facilita a los desarrolladores añadir capacidades de procesamiento seguro de documentos a sus aplicaciones en contenedores. Con Docker, puedes encapsular tu aplicación ASP.NET Core con IronSecureDoc en un entorno uniforme que facilita la implementación y la escalabilidad. Para ponerlo en funcionamiento, construyes un Dockerfile que compone tu aplicación ASP.NET Core usando la biblioteca IronSecureDoc y posiblemente otros scripts de instalación o configuraciones necesarias para que las cosas funcionen.

Docker Compose Network (Cómo Funciona para Desarrolladores): Figura 2 - IronSecureDoc

También incluye un archivo docker-compose.yml que comprende dependencias de servicio, variables de entorno y puertos mapeados, proporcionando así acceso a esto. Por lo tanto, las tareas involucradas con la seguridad de los documentos hacen que sea más fácil de gestionar para que tu aplicación web funcione de manera eficiente y efectiva fuera de la utilizada en desarrollo o producción. La instalación y configuración de IronSecureDoc, como en el caso de Docker, será necesaria para aprovechar todas las capacidades ofrecidas por el cifrado de documentos, redacción, etc.

Instalar y ejecutar IronSecureDoc

Ejecuta el siguiente comando en el Símbolo del sistema o en una ventana de terminal abierta para que la imagen de Docker de IronSecureDoc se recupere del repositorio.

# Pull IronSecureDoc Docker image
docker pull ironsoftwareofficial/ironsecuredoc
# Pull IronSecureDoc Docker image
docker pull ironsoftwareofficial/ironsecuredoc
SHELL

Docker Compose Network (Cómo Funciona para Desarrolladores): Figura 3

Después de extraer la imagen del repositorio de Docker, puedes usar otro comando para iniciar IronSecureDoc como un contenedor en ejecución.

# Run a container with network isolation and environment variables
docker container run --rm -p 8080:8080 \
  -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> \
  -e ENVIRONMENT=Development \
  -e HTTP_PORTS=8080 \
  ironsoftwareofficial/ironsecuredoc:latest
# Run a container with network isolation and environment variables
docker container run --rm -p 8080:8080 \
  -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> \
  -e ENVIRONMENT=Development \
  -e HTTP_PORTS=8080 \
  ironsoftwareofficial/ironsecuredoc:latest
SHELL

El comando Docker run anterior levantará una instancia de contenedor de IronSecureDoc. La red de puente se supone para el aislamiento de red. Esto también habilita el acceso externo a los servicios expuestos dentro del contenedor a través de http://localhost:8080 usando la bandera -p 8080:8080; esto expone el servicio interno, ejecutándose en el puerto 8080 de la red del contenedor, al puerto 8080 de la red del host.

Los contenedores, por defecto, se ejecutan en la red de puente de Docker, por lo que se aíslan de otros contenedores y del mundo exterior, a menos que los expongas mediante el mapeo de puertos, lo cual haces aquí. Las variables de entorno que se pasan (IronSecureDoc_LicenseKey, ENVIRONMENT, HTTP_PORTS) configuran el comportamiento de la aplicación en el contenedor. La bandera --rm hace que el contenedor se elimine cuando se detiene.

Esta configuración tiene la ventaja de que la red de puente aísla el contenedor y conecta servicios internamente, mientras que el mapeo de puertos puentes permite el tráfico externo desde la máquina host hacia el servicio del contenedor, lo que facilita el acceso.

Docker Compose Network (Cómo Funciona para Desarrolladores): Figura 4

Uso de IronSecureDoc con el puerto de red de Docker

La API REST de IronSecureDoc permite a los usuarios redactar, certificar y cifrar documentos tras la instalación y lanzamiento en Docker. Para pasos más detallados, consulta la documentación aquí.

Por ejemplo, para enviar un documento para ser cifrado, puedes realizar una solicitud POST a la API de IronSecureDoc:

# POST a document for encryption using cURL
curl -X 'POST' \
  'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
# POST a document for encryption using cURL
curl -X 'POST' \
  'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
SHELL

Este comando enviará automáticamente el documento a IronSecureDoc, donde se cifrará adecuadamente.

Conclusión

La red de Docker es crucial para controlar las interacciones de la aplicación y su comunicación con otras aplicaciones y el resto del mundo a través de diferentes drivers y configuraciones para diversas necesidades de aplicaciones. La configuración de red predeterminada de puente permite un aislamiento básico, ya que los servicios pueden ser expuestos a los sistemas host a través del mapeo de puertos, como lo ejemplifica la aplicación IronSecureDoc. Facilita la gestión y configuración más fáciles de aplicaciones en contenedores, mejorando la flexibilidad operativa y la escalabilidad de la aplicación.

IronSecureDoc, una herramienta avanzada de procesamiento de documentos, aprovecha las capacidades de Docker en términos de contenedorización, permitiendo una implementación rápida y confiable de aplicaciones. Esto asegura soporte para múltiples entornos mientras integra sin problemas la red de Docker con IronSecureDoc, facilitando la integración de aplicaciones de manera fácil, accesible y manejable.

En consecuencia, agiliza los flujos de trabajo, mejora la eficiencia y mejora las operaciones, especialmente al procesar documentos. Esto en última instancia enriquece tanto las experiencias de desarrollo como de implementación, convirtiéndolo en una solución valiosa para aplicaciones de software modernas. Para obtener más información sobre la licencia de IronSecureDoc, sigue esta página. Para obtener más información sobre muchas de las ofertas de productos de Iron Software, sigue este enlace.

Preguntas Frecuentes

¿Cómo facilitan la comunicación de servicios las redes de Docker Compose?

Las redes de Docker Compose permiten que los servicios dentro de una aplicación de Docker Compose se comuniquen usando nombres de servicio como nombres de host, permitiendo interacciones dentro del mismo entorno encapsulado.

¿Cuál es el papel de la red bridge predeterminada en Docker Compose?

La red bridge predeterminada creada automáticamente por Docker permite que los contenedores se comuniquen entre sí usando sus nombres de servicio como nombres de host si no se define una red específica.

¿Cómo pueden las redes personalizadas mejorar las aplicaciones de Docker Compose?

Las redes personalizadas en Docker Compose mejoran las aplicaciones al permitir el aislamiento y la comunicación selectiva entre servicios, definidos dentro del archivo docker-compose.yml.

¿Qué tipos de controladores de red Docker existen y cuáles son sus usos?

Los controladores de red Docker como bridge, host, overlay, none, macvlan e ipvlan proporcionan diferentes niveles de aislamiento, conectividad y rendimiento, adecuados para diferentes necesidades de aplicaciones.

¿Cómo apoya el controlador de red overlay la comunicación entre múltiples hosts?

El controlador de red overlay conecta contenedores a través de múltiples hosts, proporcionando comunicación segura a través de una red virtual, y se usa comúnmente en entornos de Docker Swarm o Kubernetes.

¿Por qué es importante el procesamiento seguro de documentos en entornos de contenedor?

El procesamiento seguro de documentos, como el uso de IronSecureDoc, es importante en entornos de contenedor ya que permite una encapsulación eficiente, implementación y escalado de aplicaciones con las capacidades de red de Docker.

¿Cómo puedo configurar el procesamiento seguro de documentos usando Docker?

Puedes configurar el procesamiento seguro de documentos en Docker desplegando herramientas como IronSecureDoc dentro de contenedores, configurando entornos a través de Dockerfile y docker-compose.yml para aislamiento de red.

¿Qué pasos son necesarios para encriptar documentos a través de una API REST dentro de Docker?

Para encriptar documentos a través de una API REST dentro de Docker, envía una solicitud POST con el documento y parámetros a la API de procesamiento seguro de documentos usando herramientas como cURL en una configuración contenedorizada.

¿Cómo pueden las capacidades de red de Docker mejorar la escalabilidad de aplicaciones?

Las capacidades de red de Docker mejoran la escalabilidad de aplicaciones al permitir una gestión eficiente de interacciones y comunicaciones entre servicios, optimizando flujos de trabajo y experiencias de implementación.

¿Cuál es el proceso para integrar IronSecureDoc en sistemas Docker existentes?

Integra IronSecureDoc en sistemas Docker existentes usando comandos de Docker para la configuración, utilizando el mapeo de puertos y variables de entorno para asegurar una implementación y escalado consistentes.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más