Ir para o conteúdo do rodapé
USANDO O IRONSECUREDOC

Rede Docker Compose (Como funciona para desenvolvedores)

O que é Docker?

Docker é uma plataforma de código aberto que utiliza conceitos baseados em contêineres para automatizar a implantação e o dimensionamento de aplicações dentro de contêineres leves e portáteis. Em palavras simples, um contêiner Docker reúne todo o código da aplicação e suas dependências em uma unidade, consistente em todos os ambientes—desde o laptop de um desenvolvedor até o servidor de testes ou servidores de nuvem de produção.

Docker Compose Network (Como Funciona para Desenvolvedores): Figura 1

Os contêineres não se comportam como máquinas virtuais tradicionais (VMs) porque compartilham o kernel do sistema operacional do host. Portanto, os contêineres são muito mais eficientes e mais rápidos para iniciar. De fato, os contêineres Docker garantem um comportamento consistente em todas as etapas do ciclo de desenvolvimento.

Na verdade, as imagens Docker são modelos para descrições de contêineres que mantêm o ambiente da aplicação. Este conjunto também inclui toolkits para gerenciar ciclos de vida de contêineres. Um exemplo é o Docker Compose, que você pode usar para orquestrar aplicações que consistem em múltiplos contêineres. Depois, há o Docker Hub, um registro para compartilhar imagens.

O que são redes do Docker Compose?

As redes do Docker Compose permitem que serviços em uma aplicação Docker Compose se comuniquem entre si dentro dos mesmos ambientes encapsulados. Se você definir mais de um serviço em um arquivo docker-compose.yml, o Docker Compose cria automaticamente uma rede padrão, para que esses serviços possam se comunicar entre si usando os nomes dos serviços como hostnames. Essencialmente, permite que o usuário defina sua própria rede e múltiplos serviços com a rede criada.

Rede Bridge Padrão: Se você não definir uma rede para seus contêineres ao executar docker-compose up, o Docker cria automaticamente uma rede bridge. Todos os contêineres podem se comunicar entre si com seus nomes de serviço como nomes de host nesta rede de driver padrão.

Redes Customizadas: Com essas opções, os usuários podem definir uma ou duas redes personalizadas e até mais como redes definidas pelo usuário. Você pode definir redes personalizadas dentro da porta do seu contêiner e no arquivo docker-compose.yml. Ao atribuir serviços a essas redes, você controla como os contêineres podem se comunicar:

  • Redes internas isolam serviços dos outros.
  • Múltiplas redes permitem que alguns serviços se comuniquem, enquanto negam acesso a outros.

Descoberta de Serviço: Cada serviço recebe um nome de host igual ao seu nome na configuração. Ou seja, você pode se referir a outro serviço em um contêiner usando o nome do outro serviço. Por exemplo, no serviço web, você usaria db para se referir ao IP do contêiner do banco de dados.

Modos de Rede: Você também pode configurar modos de rede para usar host, bridge ou none para serviços. O mais comumente usado é um bridge, que isola o tráfego de contêiner.

O que são Drivers de Rede Docker?

Os drivers de rede Docker descrevem as conexões e comunicações dos contêineres entre si e com outros contêineres e sistemas. Existem vários casos de uso, e os drivers de rede podem ser aplicados a esses casos, cada um oferecendo um nível diferente de isolamento, conectividade e desempenho. Vamos analisar cada driver de rede e explicar seu uso.

Tipos de Drivers de Rede Docker

Bridge (Padrão)

Redes docker internas permitem que um contêiner se comunique com outros baseados em um único host. Se você iniciar contêineres sem especificar uma rede, o Docker usa a rede bridge padrão.

# 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

Aqui, os nomes dos serviços podem ser usados para se comunicar, como ping container1 e container2.

Host

Com o driver de host, o contêiner compartilha diretamente a pilha de rede do host, de modo que um contêiner não obtém seu próprio isolamento de rede 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

O contêiner NGINX agora compartilha o IP do host e as interfaces de rede, assim contornando o isolamento de rede.

Overlay

Interconecta contêineres em vários hosts e é usado principalmente em ambientes Docker Swarm ou Kubernetes, conectando máquinas físicas ou virtuais através de contêineres para se comunicarem de forma segura usando uma rede 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

Isso cria um serviço em um cluster Swarm que pode se estender por vários hosts Docker.

Nenhum

Esse driver none desativa o networking para o contêiner. Este contêiner está isolado de qualquer tipo de comunicação de rede 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

O contêiner busybox não terá acesso à internet e não poderá enviar chamadas para as redes de outros contêineres ou para o mundo exterior.

Macvlan

O driver Macvlan permite que os contêineres pareçam dispositivos físicos na rede com seus próprios endereços MAC, para que possam acessar diretamente a rede 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

O driver IPvlan é semelhante ao Macvlan, mas foca em atribuir endereços IP em vez de depender do Nível 2 (endereços MAC). Ele permite que múltiplos contêineres compartilhem a mesma interface de rede.

# 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

Ele compartilhará a interface Ethernet do Nível 2 do host com a rede, mas terá um endereço IP diferente.

Plugins Personalizados

Os plugins personalizados do Docker são drivers de rede desenvolvidos por terceiros ou usuários, oferecendo recursos elaborados sobre capacidades de rede que são mais do que o que o Docker pode oferecer como padrão. Plugins de terceiros do Docker podem integrar-se com frameworks de soluções de rede externas como Redes Definidas por Software, melhorando assim capacidades como segurança, escalabilidade, bem como rede multi-host. O Docker fornece aos desenvolvedores e fornecedores uma arquitetura versátil para plugins de rede, permitindo sua instalação e uso da mesma forma que o driver nativo.

IronSecureDoc

IronSecureDoc para Docker facilita para os desenvolvedores adicionar capacidades seguras de processamento de documentos às suas aplicações em contêineres. Com o Docker, você pode encapsular sua aplicação ASP.NET Core com IronSecureDoc em um ambiente uniforme que facilita a implantação e escalabilidade. Para fazê-lo funcionar, você constrói um Dockerfile que compõe sua aplicação ASP.NET Core usando a biblioteca IronSecureDoc e possivelmente outros scripts de instalação ou configurações necessárias para fazer as coisas funcionarem.

Docker Compose Network (Como Funciona para Desenvolvedores): Figura 2 - IronSecureDoc

Também inclui um arquivo docker-compose.yml que compreende dependências de serviços, variáveis de ambiente e portas mapeadas, fornecendo acesso a isto. Portanto, as tarefas envolvidas com a segurança de documentos tornam mais fácil gerenciar para que sua aplicação web funcione de forma eficiente e eficaz fora daquela usada em desenvolvimento ou produção. Instalar e configurar o IronSecureDoc como é no caso do Docker será necessário para aproveitar todas as capacidades oferecidas pela criptografia dos documentos, redação, etc.

Instalar e Executar IronSecureDoc

Execute o seguinte comando no Prompt de Comando ou em uma janela de terminal aberta para que a imagem Docker do IronSecureDoc seja buscada do repositório.

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

Docker Compose Network (Como Funciona para Desenvolvedores): Figura 3

Após puxar a imagem do repositório Docker, você pode usar outro comando para iniciar o IronSecureDoc como um contêiner em execução.

# 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

O comando Docker run acima trará uma instância de contêiner do IronSecureDoc. A rede bridge é assumida para isolamento de rede. Isso também permite o acesso externo aos serviços expostos dentro do contêiner por meio de http://localhost:8080 usando a flag -p 8080:8080; isso expõe o serviço interno, rodando na porta 8080 da rede do contêiner, para a porta 8080 da rede do host.

Por padrão, os contêineres rodam na rede bridge do Docker, então se isolam de outros contêineres e do mundo externo a menos que você os exponha via mapeamento de portas, o que você faz aqui. As variáveis de ambiente sendo passadas (IronSecureDoc_LicenseKey, ENVIRONMENT, HTTP_PORTS) configuram o comportamento do aplicativo no contêiner. A flag --rm faz com que o contêiner seja removido quando ele para.

Essa configuração tem a vantagem de que a rede bridge isola o contêiner e conecta serviços internamente, enquanto o mapeamento de portas conectiva o tráfego externo do host na máquina para o serviço do contêiner, facilitando assim o acesso.

Docker Compose Network (Como Funciona para Desenvolvedores): Figura 4

Usando IronSecureDoc com a Porta de Rede Docker

A API REST do IronSecureDoc permite aos usuários redigir, certificar e criptografar documentos após a instalação e inicialização no Docker. Para passos mais detalhados, consulte a documentação aqui.

Por exemplo, para enviar um documento para criptografia, você pode realizar uma requisição POST para a API do 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á automaticamente o documento para o IronSecureDoc, onde ele será criptografado apropriadamente.

Conclusão

A rede Docker é crucial no controle das interações da aplicação e sua comunicação com outras aplicações e o restante do mundo através de diferentes drivers e configurações para diversas necessidades de aplicação. A configuração padrão da rede bridge permite isolamento básico, pois os serviços podem ser expostos aos sistemas host através do mapeamento de portas, como exemplificado pela aplicação IronSecureDoc. Facilita o gerenciamento e configuração mais fáceis de aplicações em contêiner, melhorando a flexibilidade operacional e escalabilidade da aplicação.

IronSecureDoc, uma ferramenta avançada de processamento de documentos, aproveita as capacidades do Docker em termos de conteinerização, permitindo implantações rápidas e confiáveis da aplicação. Isso garante suporte para múltiplos ambientes ao integrar de maneira homogênea a rede Docker com o IronSecureDoc, tornando a integração das aplicações fácil, acessível e gerenciável.

Consequentemente, ele simplifica fluxos de trabalho, melhora a eficiência e aprimora operações, especialmente ao processar documentos. Isso enriquece, em última análise, tanto as experiências de desenvolvimento quanto as de implantação, tornando uma solução valiosa para aplicações modernas de software. Para mais informações sobre licenciamento de IronSecureDoc, por favor siga esta página. Para aprender mais sobre muitas das ofertas de produtos da Iron Software, siga este link.

Perguntas frequentes

Como as redes do Docker Compose facilitam a comunicação entre serviços?

As redes Docker Compose permitem que os serviços dentro de uma aplicação Docker Compose se comuniquem usando nomes de serviço como nomes de host, possibilitando interações dentro do mesmo ambiente encapsulado.

Qual é a função da rede bridge padrão no Docker Compose?

A rede bridge padrão criada automaticamente pelo Docker permite que os contêineres se comuniquem entre si usando seus nomes de serviço como nomes de host, caso nenhuma rede específica seja definida.

Como as redes personalizadas podem aprimorar os aplicativos Docker Compose?

As redes personalizadas no Docker Compose aprimoram os aplicativos, permitindo o isolamento e a comunicação seletiva entre serviços, definidos no arquivo docker-compose.yml .

Que tipos de drivers de rede Docker existem e para que servem?

Os drivers de rede do Docker, como bridge, host, overlay, none, Macvlan e IPvlan, oferecem diferentes níveis de isolamento, conectividade e desempenho, adequados para diversas necessidades de aplicação.

Como o driver de rede overlay suporta a comunicação entre múltiplos hosts?

O driver de rede overlay conecta contêineres em vários hosts, fornecendo comunicação segura por meio de uma rede virtual, e é comumente usado em ambientes Docker Swarm ou Kubernetes.

Por que o processamento seguro de documentos é importante em ambientes de contêineres?

O processamento seguro de documentos, como o uso do IronSecureDoc, é importante em ambientes de contêineres, pois permite o encapsulamento, a implantação e o dimensionamento eficientes de aplicativos com os recursos de rede do Docker.

Como posso configurar o processamento seguro de documentos usando o Docker?

Você pode configurar o processamento seguro de documentos no Docker implantando ferramentas como o IronSecureDoc em contêineres e configurando ambientes por meio de Dockerfile e docker-compose.yml para isolamento de rede.

Quais são os passos necessários para criptografar documentos através de uma API REST no Docker?

Para criptografar documentos por meio de uma API REST dentro do Docker, envie uma solicitação POST com o documento e os parâmetros para a API de processamento de documentos segura usando ferramentas como o cURL em um ambiente conteinerizado.

Como os recursos de rede do Docker podem melhorar a escalabilidade das aplicações?

Os recursos de rede do Docker aprimoram a escalabilidade dos aplicativos, permitindo o gerenciamento eficiente das interações e comunicações entre os serviços, simplificando os fluxos de trabalho e as experiências de implantação.

Qual é o processo para integrar o IronSecureDoc em sistemas Docker existentes?

Integre o IronSecureDoc em sistemas Docker existentes usando comandos Docker para configuração, mapeamento de portas e variáveis de ambiente para garantir implantação e escalabilidade consistentes.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me