Neste artigo, imostrarei o que é Docker e os conceitos de containers.
O Docker é uma plataforma para criar, compartilhar e executar aplicativos com containers. Quando você utiliza containers para implantar os seus aplicativos, você utiliza a containerização.
Os containers são:
- Flexíveis: Até as aplicações mais complexas podem ser containers;
- Leves: os containers aproveitam e compartilham o kernel do host, tornando-os muito mais eficientes em termos de recursos do sistema do que as máquinas virtuais;
- Portáteis: você pode criá-los localmente, implantar na nuvem e executar em qualquer lugar;
- Fraco acoplamento: Containers são auto-suficientes e encapsulados, isto é, permitem substituir ou atualizar um sem atrapalhar outros;
- Escaláveis: Você pode distribuir automaticamente réplicas de containers por um datacenter;
- São seguros: aplicam restrições e isolamentos agressivos.
Mas o que é um container?
Bsicamente, não passa de um processo que está em execução, com o porém de ser isolado do host e de outros containers. Cada container interage com seu sistema de arquivos privado, sendo esse um sistema fornecido por uma imagem do Docker. Essa imagem incluirá tudo que for necessário para executar o aplicativo.
Ele difere de uma máquina virtual pois uma VM executa um SO completo, com acesso virtual a recursos do host. Já o Docker é executado nativamente no Linux e compartilha o kernel do Host com outros containers, executando um processo discreto, tornando-o leve.
Vantagens:
Com o Docker, temos uma alta portabilidade e podemos escalar nossos apps entre nuvens e datacenters, garantindo que esses aplicativos sejam executados da mesma maneira em qualquer lugar.
Orquestradores:
São ferramentas para gerenciar, dimensionar e manter aplicativos em containers. Os exemplos mais comuns são Kubernetes e Docker Swarm.
Como utilizar o Docker?
Você pode fazer o download do Docker Desktop em: https://docs.docker.com/docker-for-windows/install/, para OSX ou Windows. O Docker Desktop permite a configuração de Kubernetes em sua máquina local, para você utilizar todos os recursos do orquestrador sem a necessidade de um cluster.
Após instalado, iremos:
Ativar Kubernetes:
-
- Com o Docker aberto, clique em Configurações -> Kubernetes;
- Ative a caixa Ativar Kubernetes. Você obterá êxito quando ver uma luz verde ao lado de ‘O Kubernetes está em execução’;
- Crie um arquivo de texto chamado pod.yaml com o seguinte conteúdo:
apiVersion: v1 kind: Pod metadata: name: demo spec: containers: - name: testpod image: alpine:3.5 command: ["ping", "8.8.8.8"]
Isso faz a descrição de um pod com um container, que isola um ping simples para 8.8.8.8;
- No PowerShell, navegue até o pod.yaml criado e crie seu pod:
kubectl apply -f pod.yaml
- Verifique o funcionamento do pod:
kubectl get pods
Sua saída será algo como:
NAME READY STATUS RESTARTS AGE demo 1/1 Running 0 4s
- Verifique os logs para um processo de ping:
kubectl logs demo
E sua saída será algo como:
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms 64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms 64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms ...
- E, por fim, desmonte o seu pod:
kubectl delete -f pod.yaml
Habilitando Swarm:
- Abra o PowerShell e inicialize o Swarm:
docker swarm init
Se tudo ocorrer bem, sua saída será:
Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
- Execute um serviço Docker que use um sistema de arquivos alpine e oingue para 8.8.8.8:
docker service create --name demo alpine:3.5 ping 8.8.8.8
- Com este comando, verifique se o container foi criado:
docker service ps demo
Sua saída será algo como:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 463j2s3y4b5o demo.1 alpine:3.5 docker-desktop Running Running 8 seconds ago
- Verifique os logs que você esperaria para um processo de ping:
docker service logs demo
E sua saída será:
demo.1.463j2s3y4b5o@docker-desktop | PING 8.8.8.8 (8.8.8.8): 56 data bytes demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms ...
E por fim, desmonte o seu serviço de teste:
docker service rm demo
Pronto, você já confirmou que pode executar cargas de trabalho em container simples no Kubernetes e Swarm!
Leia a documentação original (inglês) e completa em: https://docs.docker.com/get-started/
Gostou deste artigo? Comente abaixo!