CodeGym /Cursos /Docker SELF /Termos Básicos de Docker

Termos Básicos de Docker

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

6.1 Imagens (Images)

Pra trabalhar de boa com Docker, é importante entender alguns termos chave: imagens, containers e registries. Bora analisar esses termos pra sacar pra que servem e como interagem entre si.

Imagem Docker — é um modelo a partir do qual os containers são criados. A imagem contém todos os componentes necessários pra rodar uma aplicação: sistema operacional, aplicação, bibliotecas e dependências, e também arquivos de configuração. Fazendo uma analogia com OOP: a imagem Docker é como uma classe, e o container é o objeto dessa classe. As imagens são criadas com um arquivo chamado Dockerfile — um arquivo de texto que descreve os passos pra criar a imagem.

Características principais das imagens:

  1. Estrutura em camadas: as imagens são compostas de várias camadas. Existe uma camada base, e cada uma das seguintes representa mudanças em relação à camada anterior. Isso economiza espaço e reduz o tempo de download.
  2. Reutilização: a mesma imagem pode ser usada pra criar vários containers.
  3. Portabilidade: as imagens podem ser transportadas entre sistemas diferentes, o que as torna ideais pra desenvolvimento, testes e deploy de aplicações em vários ambientes.

Exemplos de uso das imagens:

Criando sua própria imagem: você pode criar sua própria imagem escrevendo um Dockerfile, onde você especifica as configurações da sua aplicação e suas dependências.

dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]

Usando uma imagem pronta: você pode usar as imagens disponíveis no Docker Hub pra rapidamente rodar aplicações padrão, como web servers ou bancos de dados.

Terminal

docker pull nginx 

Esse comando faz o download da imagem nginx do repositório público Docker Hub.

6.2 Containers

Um container Docker é uma instância em execução de uma imagem. Os containers isolam aplicativos e suas dependências em um ambiente de execução separado, o que permite executá-los independentemente do sistema host e de outros containers. Containers são leves porque usam o kernel do sistema operacional host em vez de criar um kernel separado, como fazem as máquinas virtuais.

Principais características dos containers:

  • Isolamento: os containers isolam aplicativos, garantindo sua execução independente e prevenindo conflitos de dependências.
  • Leveza: os containers consomem menos recursos em comparação com máquinas virtuais, pois não precisam de um sistema operacional separado.
  • Inicialização rápida: os containers são iniciados e parados muito mais rápido do que máquinas virtuais, o que os torna ideais para ambientes dinâmicos e escalonamento.

Exemplos de uso de containers:

Executando um container: você pode executar um container a partir de uma imagem usando o comando docker run.

Terminal

docker run -d -p 80:80 --name mynginx nginx

Gerenciamento de containers: o Docker fornece comandos para gerenciar containers: start, stop, restart, rm e exec.

Terminal

docker stop mynginx
docker rm mynginx

Você aprenderá mais sobre todos os comandos e seus parâmetros em aulas futuras.

6.3 Registries

Registry do Docker — é um repositório de imagens Docker. Os registries permitem que devs e organizações armazenem, gerenciem e distribuam imagens de containers. Existem registries públicos e privados.

Características principais dos registries:

  • Registries públicos: como o Docker Hub, oferecem acesso a várias imagens criadas pela comunidade e por devs oficiais.
  • Registries privados: são usados pra armazenar e gerenciar imagens dentro de uma organização, garantindo controle de acesso e segurança.
  • Integração com CI/CD: os registries se integram fácil com sistemas de integração e entrega contínuas, automatizando o processo de criação e deploy de imagens.

Exemplos de uso de registries:

1. Docker Hub: registry público (e o mais popular) de imagens Docker. Fornece acesso a várias imagens prontas (e muitas vezes verificadas, como indicado pelas stats de download).

Terminal

docker pull nginx
docker push myusername/myimage:tag  

2. Registry privado: você pode configurar e usar seu próprio registry com o Docker Registry.

Terminal

docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage

Interação entre imagens, containers e registries

Esses três componentes estão intimamente conectados e formam a base do trabalho com o Docker:

  • Criação de imagem: o dev cria uma imagem usando um Dockerfile e a salva localmente.
  • Envio da imagem para o registry: a imagem é enviada para o registry (por exemplo, Docker Hub ou um registry privado), onde é armazenada e fica acessível pra outros users ou sistemas.
  • Execução do container: o user baixa uma imagem do registry e executa um container, que isola o app e garante sua execução.

6.4 Orquestração (Orchestration)

Orquestração — é o processo de gerenciamento de vários containers em um ambiente distribuído. Ferramentas de orquestração ajudam a automatizar a implantação, escalonamento e gerenciamento dos containers.

  • Kubernetes: a plataforma de orquestração de containers mais popular que permite gerenciar um cluster de containers em diferentes nós.
  • Docker Swarm: plataforma de orquestração integrada no Docker para criar e gerenciar clusters de Docker.
  • Funções de orquestração: escalonamento automático, autorrecuperação, gerenciamento de redes e balanceamento de carga.

6.5 Redes (Networks)

As redes no Docker permitem que os containers interajam entre si e com o mundo externo. O Docker oferece vários tipos de redes para diferentes cenários de uso.

  • Bridge: a rede padrão criada pelo Docker. Os containers na rede bridge podem interagir entre si.
  • Host: o container usa as interfaces de rede da máquina host, obtendo acesso direto a elas.
  • Overlay: usada para criar redes entre vários daemons Docker. Necessária para a orquestração.
  • None: desativa todas as interfaces de rede do container. Útil para tarefas isoladas.

6.6 Volumes

Volumes — são um mecanismo pra armazenar dados dos containers de forma persistente. Eles permitem que os dados fiquem salvos fora do container, assim a informação não é perdida quando reiniciar ou deletar o container.

  • Criar um volume: os volumes são criados com o comando docker volume create.
  • Montar um volume: os volumes são conectados aos containers com a flag -v ao iniciar.
  • Vantagens: volumes garantem um jeito fácil de salvar e compartilhar dados entre containers, além de terem um desempenho melhor se comparados com diretórios vinculados (bind mounts).

Importante! Um volume é como um disco rígido virtual que pode ser conectado a uma máquina virtual ou container. Geralmente ele é salvo no sistema operacional hospedeiro como um arquivo comum.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION