Skip to content

Introdução ao Docker

Contexto

Os containers e as máquinas virtuais são ambientes de computação empacotados que combinam vários componentes de TI e os isolam do restante do sistema. As principais diferenças entre eles tema ver com escala e portabilidade

  • O Containers costumam ser usados para empacotar funções individuais que realizam tarefas específicas, os famosos microsserviços.
  • As máquinas virtuais costumam ter seu próprio sistema operacional, o que possibilita a execução simultânea de várias funções com uso intenso de recursos

Os contêineres compartilham o kernel do sistema operacional da máquina e, portanto, não exigem um sistema operacional por aplicativo, aumentando a eficiência do servidor e reduzindo os custos de servidor e licenciamento

Docker

Docker elimina tarefas de configuração repetitivas e mundanas e é usado em todo o ciclo de vida de desenvolvimento para desenvolvimento de aplicativos rápido, fácil e portátil - desktop e nuvem. A plataforma abrangente de ponta a ponta do Docker inclui UIs, CLIs, APIs e segurança projetados para trabalhar juntos em todo o ciclo de vida de entrega do aplicativo [7]

  • Construa uma vez e rode em qualquer lugar
  • Rapidez (7x mais rápido que uma virtualização convencioanl)
  • Infraestrutura como código
  • Modularidade

Instalação

Siga as instruções de instalação de acordo com seu sistema operacional aqui

Hello world

Testando a instalação sudo docker run hello-world

docker version # Display the version of docker installed docker run hello-world # Pull, create, and run 'hello-world'

Get started

Entidades Básicas

Imagens

Uma imagem de contêiner do Docker é um pacote de software leve, autônomo e executável que inclui tudo o que é necessário para executar um aplicativo: código, tempo de execução, ferramentas do sistema, bibliotecas do sistema e configurações [4]

  • Template para criação de containers
  • Uma imagem pode ser usada para criação de diversos containers
docker image ls
docker rmi <image>
  • Dockerfile
  • Layered File System (camadas)
  • Build
docker build -t myimage:1.0 .
  • Version control (tag)
  • Registro
  • docker hub
  • amazon ECS
  • comandos
    • login
    • search
    • pull: docker pull myimage:1.0
    • push: docker push myrepo/myimage:2.0

Container

Um contêiner é uma unidade padrão de software que empacota o código e todas as suas dependências para que o aplicativo seja executado de forma rápida e confiável de um ambiente de computação para outro [4].

Imagens de contêiner tornam-se contêineres em tempo de execução e, no caso de contêineres do Docker - as imagens se tornam contêineres quando são executadas no Docker Engine [4]

  • Instância em execução de uma imagem
  • Morre se não estiver executando um serviço

Exemplo de uso

Volume

Os volumes são o mecanismo preferencial para a persistência de dados gerados e usados por contêineres do Docker. Embora as bind mounts dependam da estrutura de diretórios e do sistema operacional da máquina host, os volumes são totalmente gerenciados pelo Docker [6].

  • Persistência de dados entre containers
  • O Docker mantém a localização física no disco
  • Pode ser usado simultaneamente por vários containers
  • Não são removidos automaticamente
docker run -v $(pwd)/secrets:/secrets:ro debian
docker volume create todo-db
docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started

Network

Um dos motivos pelos quais os contêineres e serviços do Docker são tão poderosos é que você pode conectá-los ou conectá-los a cargas de trabalho que não são do Docker. Os contêineres e serviços do Docker nem precisam estar cientes de que são implantados no Docker ou se seus pares também são cargas de trabalho do Docker ou não. Quer seus hosts Docker executem Linux, Windows ou uma mistura dos dois, você pode usar o Docker para gerenciá-los de maneira independente de plataforma [5]

  • Comunicação entre containers
  • Comunicação com o localhost
  • Comunicação entre serviços terceiros

Docker Compose

Ferramenta para orquestração de serviçoes em containers. Siga os passos para intalação aqui

  • YAML
  • docker-compose.yml
  • services
docker-compose -f <docker-compose-file> up
docker-compose stop

Prune

Os elementos do docker utilizam recursos do seu sistema operacional, remova-os se não estiver utilizando

  • docker volume prune
  • docker container prune
  • docker image prune

Próximos passos

  1. Otimização da imagem
  2. multi-stage builds
  3. Deploy
  4. Orquestração:
  5. docker swarm
  6. docker compose
  7. kubernetes

Saiba Mais

  1. Docker get-started
  2. Docker Commandline Reference
  3. Podcast sobre Kubernetes

Referências

  1. Use containers to Build, Share and Run your applications
  2. Networking overview
  3. Use volumes
  4. Docker overview
  5. Containers x máquinas virtuais