Docker: O Que Aprendi na Semana 1 de estudo

Nos últimos 6 meses, decidi que focaria na minha carreira e começaria a estudar novas ferramentas. Uma dessas ferramentas é o docker, nesse artigo vou compartilhar importantes conceitos que aprendi na minha primeira semana. Containers Containers vs Máquina virtual Primeiros passos com docker Containers Um container é um ambiente isolado para empacotar aplicações, isolando processos e recursos. A maneira como são montados permite que não consumam muitos recursos da máquina, pois são executados como um processo do sistema operacional da máquina host. Devido a essas características, cada um pode ser iniciado e parado rapidamente. São construídos utilizando imagens — que são imutáveis. A proposta do docker é equalizar ambientes e evitar problemas dessa natureza. Containers vs Máquina virtual Antes dos containers era comum utilizar máquinas virtuais. Mas qual é a diferença? Máquinas virtuais Bem, pra começar as máquinas virtuais possuem um sistema operacional individual, ou seja, pra cada máquina virtual, temos um novo sistema operacional completo, incluindo kernel. Além disso, possui um hypervisor para gerenciar as máquinas. Isso faz com que seja necessário mais recursos, que são usados com menos eficiência, e mais tempo de inicialização. Containers Por outro lado, containers compartilham o kernel com o host e mantém a aplicação e dependências isoladas. Consequentemente, os containers possuem mais eficiência no uso de recursos e têm inicialização mais rápida. Isso faz com que os containers sejam mais apropriados para escalabilidade e permite a execução de muitas aplicações no host. O ponto de falha do docker é que todos os containers são controlados pelo docker daemon, uma vez que ele caia, todos os outros caem. Primeiros passos com docker Instalando o docker Para instalar na sua máquina, siga os passos do tutorial do seu sistema operacional: Windows Linux Mac Primeiros comandos Inicia container com a imagem informada e gera nome randômico. docker run Inicia container com a imagem informada e com o nome 'teste'. docker run --name=teste Remove container com o ID informado - se estiver parado docker rm Remove container com o nome informado - se estiver parado docker rm Força remoção do container - mesmo que esteja parado. docker rm -f Attach e Detach Ao iniciar um container seu terminal ficará travado, para evitar isso, faça o detach: docker run -d Mas caso deseje ler os logs do container no terminal, faça: docker attach Remoção automática do container após paralização Para isso, faça: docker run --rm Portas dos containers A porta usada no container é exposta internamente, de maneira que acessando a partir da sua máquina, não é possível acessa-la. No entanto, para fazer essa configuração, faça: docker run -p 8080:80 A porta 8080 da sua máquina irá refletir a porta 80 do container. Persistência de dados e volumes: Bind mounts vs volumes Ao parar um container, os dados dentro dele serão perdidos, mas uma forma de contornar isso é utilizando Bind mounts ou volumes. Bind mounts Compartilha pasta com o host, caso a pasta seja modificada localmente, será refletida no container, é útil em ambientes de desenvolvimento. Volumes São gerenciados por pastas isoladas, salvas nos arquivos do host, e são mais performáticos, ideais para produção. Comandos Bind mounts Criando Bind Mount: docker run -dp 3333:80 -v caminho_pasta_local:caminho_pasta_container Comandos Bind mounts Criando volume: docker volume create Backups com busybox É uma imagem de utilitários linux, pode ser útil para fazer backups. Compactar e fazer backup. docker run --rm -it -v volume_nome:/data -v $(pwd)/backup_host:/backup busybox tar czf /backup/backup.tar.gz /data Descompactar e restaurar backup. docker run --rm -it -v volume_nome:/data -v $(pwd)/backup_host:/backup busybox tar xzf /backup/backup.tar.gz -C /data Conclusão Esses foram os conceitos que aprendi na minha primeira semana explorando Docker. Em breve, trarei mais descobertas e práticas!

Mar 13, 2025 - 03:57
 0
Docker: O Que Aprendi na Semana 1 de estudo

Nos últimos 6 meses, decidi que focaria na minha carreira e começaria a estudar novas ferramentas. Uma dessas ferramentas é o docker, nesse artigo vou compartilhar importantes conceitos que aprendi na minha primeira semana.

  1. Containers
  2. Containers vs Máquina virtual
  3. Primeiros passos com docker

Containers

  • Um container é um ambiente isolado para empacotar aplicações, isolando processos e recursos.
  • A maneira como são montados permite que não consumam muitos recursos da máquina, pois são executados como um processo do sistema operacional da máquina host.
  • Devido a essas características, cada um pode ser iniciado e parado rapidamente.
  • São construídos utilizando imagens — que são imutáveis.
  • A proposta do docker é equalizar ambientes e evitar problemas dessa natureza.

Containers vs Máquina virtual

Antes dos containers era comum utilizar máquinas virtuais.
Mas qual é a diferença?

Máquinas virtuais

Bem, pra começar as máquinas virtuais possuem um sistema operacional individual, ou seja, pra cada máquina virtual, temos um novo sistema operacional completo, incluindo kernel. Além disso, possui um hypervisor para gerenciar as máquinas.

Isso faz com que seja necessário mais recursos, que são usados com menos eficiência, e mais tempo de inicialização.

Containers

Por outro lado, containers compartilham o kernel com o host e mantém a aplicação e dependências isoladas.

Consequentemente, os containers possuem mais eficiência no uso de recursos e têm inicialização mais rápida.

Isso faz com que os containers sejam mais apropriados para escalabilidade e permite a execução de muitas aplicações no host.

Image description

O ponto de falha do docker é que todos os containers são controlados pelo docker daemon, uma vez que ele caia, todos os outros caem.

Primeiros passos com docker

Instalando o docker

Para instalar na sua máquina, siga os passos do tutorial do seu sistema operacional:

Windows
Linux
Mac

Primeiros comandos

Inicia container com a imagem informada e gera nome randômico.
docker run

Inicia container com a imagem informada e com o nome 'teste'.
docker run --name=teste

Remove container com o ID informado - se estiver parado
docker rm

Remove container com o nome informado - se estiver parado
docker rm

Força remoção do container - mesmo que esteja parado.
docker rm -f

Attach e Detach

Ao iniciar um container seu terminal ficará travado, para evitar isso, faça o detach:

docker run -d

Mas caso deseje ler os logs do container no terminal, faça:
docker attach

Remoção automática do container após paralização

Para isso, faça:
docker run --rm

Portas dos containers

A porta usada no container é exposta internamente, de maneira que acessando a partir da sua máquina, não é possível acessa-la.

No entanto, para fazer essa configuração, faça:
docker run -p 8080:80

A porta 8080 da sua máquina irá refletir a porta 80 do container.

Persistência de dados e volumes: Bind mounts vs volumes

Ao parar um container, os dados dentro dele serão perdidos, mas uma forma de contornar isso é utilizando Bind mounts ou volumes.

  • Bind mounts
    Compartilha pasta com o host, caso a pasta seja modificada localmente, será refletida no container, é útil em ambientes de desenvolvimento.

  • Volumes
    São gerenciados por pastas isoladas, salvas nos arquivos do host, e são mais performáticos, ideais para produção.

Comandos Bind mounts

Criando Bind Mount:
docker run -dp 3333:80 -v caminho_pasta_local:caminho_pasta_container

Comandos Bind mounts

Criando volume:
docker volume create

Backups com busybox
É uma imagem de utilitários linux, pode ser útil para fazer backups.

Compactar e fazer backup.
docker run --rm -it -v volume_nome:/data -v $(pwd)/backup_host:/backup busybox tar czf /backup/backup.tar.gz /data

Descompactar e restaurar backup.
docker run --rm -it -v volume_nome:/data -v $(pwd)/backup_host:/backup busybox tar xzf /backup/backup.tar.gz -C /data

Conclusão

Esses foram os conceitos que aprendi na minha primeira semana explorando Docker. Em breve, trarei mais descobertas e práticas!