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!

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:
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!