CodeGym /Cursos /Docker SELF /Razões para usar Docker

Razões para usar Docker

Docker SELF
Nível 10 , Lição 3
Disponível

9.1 Arquitetura de Microsserviços

Docker virou uma ferramenta essencial pra desenvolvimento moderno. Ele ajuda a criar, rodar e implementar apps em containers isolados, o que os torna práticos, estáveis e simples de trabalhar. Nessa aula, vamos ver exemplos de como o Docker facilita muito a vida de devs e admins.

Problema

Desenvolver apps monolíticos geralmente dá problema na manutenção e no escalonamento. Qualquer mudança numa parte pode impactar outras, complicando as atualizações e os testes.

Solução com Docker

O Docker possibilita usar uma arquitetura de microsserviços, empacotando cada serviço em um container separado. Isso garante independência e isolamento entre os microsserviços.

Exemplo

Suponha que você tenha um app com três microsserviços: usuários, pedidos e pagamentos. Com o Docker, dá pra criar três containers:

Terminal

docker run -d --name users-service users-image
docker run -d --name orders-service orders-image
docker run -d --name payment-service payment-image 

9.2 Integração e entrega contínuas (CI/CD)

Problema

Desenvolver, testar e implantar geralmente levam muito tempo, especialmente se os ambientes forem diferentes entre si.

Solução com Docker

O Docker ajuda a criar o mesmo ambiente para todas as etapas de desenvolvimento. Isso garante que o aplicativo funcione da mesma forma em todos os lugares — desde o desenvolvimento até a produção.

Exemplo

Configurar CI/CD com Docker permite automatizar a construção, os testes e a implantação:

Construção da imagem:

Terminal


docker build -t my-app .

Execução de testes:

Terminal


docker run my-app ./run-tests.sh

Implantação:

Terminal


docker push my-app:latest
ssh user@production-server "docker pull my-app:latest && docker run -d my-app"

9.3 Portabilidade e consistência

Problema

Muitas vezes, uma aplicação funciona em uma máquina, mas se recusa a rodar em outra por causa de diferenças nas configurações ou versões de dependências.

Solução com Docker

Docker permite empacotar a aplicação com todas as suas dependências em um container, que funciona garantidamente em qualquer ambiente.

Exemplo

Com Dockerfile, você pode descrever as dependências e os comandos para rodar a aplicação:

dockerfile

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

Agora a aplicação vai funcionar de forma estável tanto na sua máquina local quanto no servidor ou na nuvem.

9.4 Garantir segurança

Problema

Deploy de aplicações pode ser vulnerável, especialmente se você usar bibliotecas e ferramentas de terceiros.

Solução com Docker

Docker garante isolamento dos containers, diminuindo os riscos. Os containers trabalham de forma independente, limitando o impacto no sistema.

Exemplo

Use parâmetros para limitar os recursos e melhorar a segurança:

Terminal


docker run -d --name secure-app --memory="512m" --cpus="1" --security-opt=no-new-privileges my-secure-app

9.5 Testes e automação

Problema

Fazer testes em diferentes configurações leva tempo e pode afetar o ambiente principal.

Como o Docker resolve isso

O Docker permite criar ambientes de teste isolados sem mexer no sistema principal.

Exemplo

Exemplo de iniciar um banco de dados e uma aplicação em um ambiente de teste:

Terminal


docker run -d --name test-db -e POSTGRES_PASSWORD=mysecretpassword postgres
docker run -d --name test-app --link test-db:db my-app 

9.6 Computação em Nuvem e Escalabilidade

Problema

Escalar aplicações na nuvem pode ser complicado e caro.

Solução com Docker

Docker facilita o escalonamento graças à integração com plataformas em nuvem como AWS, Azure e Google Cloud.

Exemplo

Usando Docker e Kubernetes, dá pra configurar o escalonamento com facilidade. Aqui está um exemplo de arquivo yaml. Pode não fazer muito sentido agora, mas com o tempo vamos entender tudo.

yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: my-app:latest
          ports:
            - containerPort: 80
1
Pesquisa/teste
Comandos básicos do Docker, nível 10, lição 3
Indisponível
Comandos básicos do Docker
Comandos básicos do Docker
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION