Você sabe o que é Docker?

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:

    1. Com o Docker aberto, clique em Configurações -> Kubernetes;
    2. Ative a caixa Ativar Kubernetes. Você obterá êxito quando ver uma luz verde ao lado de ‘O Kubernetes está em execução’;
    3. 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;

  1. No PowerShell, navegue até o pod.yaml criado e crie seu pod:
    kubectl apply -f pod.yaml
  2. 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

     

  3. 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
    ...

     

  4. 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!

 

Deixe um comentário