O Docker é uma ferramenta essencial para um desenvolvedor hoje em dia, é uma das tecnologias mais requisitadas em vagas de back-end.
Apresentação do Curso
Entretanto, ele pode parecer assustador para muitas pessoas que iniciam sua jornada com ele. Você começa a ouvir conceitos como máquinas virtuais, docker desktop, virtualização, e nem sabe por onde começar, simplesmente passar da etapa de instalação já é um desafio monumental que afasta muitas pessoas dessa tecnologia que, na verdade, é relativamente simples de usar por qualquer desenvolvedor que já esteja acostumado com ferramentas básicas do dia-a-dia como git ou seu gerenciador de pacotes.
Por isso, o foco desse curso é te ajudar a dar aquele kickstart. Te guiaremos nos primeiros passos para passar pelo básico de forma rápida o suficiente para você já sair pelo menos conseguindo usar ele no dia-a-dia.
Não temos como objetivo ensinar profundamente o Docker nos seus mínimos detalhes, mas sim dar aquela base desmistificando a tecnologia para que seja possível se acostumar com ela, te dando a confiança que você precisa para conseguir continuar seus estudos por conta depois que aquela barreira inicial for derrubada.
O que é o Docker?
O Docker é uma tecnologia que serve para resolver o famoso problema do "Na minha máquina funciona" onde você programa algo, funciona maravilhosamente bem no seu computador, e quando você sobe para o cliente ver, ele manda aquela mensagem falando que não está funcionando, e você tem que passar horas no servidor tentando descobrir qual configuração está causando o problema.
A ideia é que ele vai criar "containers" que são um tipo de máquina virtual só que muito mais leve, ou seja, a gente resolve o problema usando o mesmo computador para tudo desde o desenvolvimento até a produção.
Por que simplesmente não usar uma VM então?
Se o Docker simplesmente é uma forma de virtualização, por que não usar outras soluções já existentes como por exemplo subir uma máquina virtual tradicional?
Existem vários motivos para isso, por exemplo, ser muito mais fácil de configurar e os containers do Docker são muito mais leves que máquinas virtuais tradicionais, então eles iniciam mais rápido, exigem menos do seu computador para rodar eles, e ocupam muito menos espaço em disco.
Nós escrevemos uma especificação para o Docker saber como é a máquina que vai rodar o projeto, assim ele cria o "tal do container" e roda a aplicação dentro dele.
Como ele sempre cria o container seguindo a especificação, a máquina sempre vem configurada da mesma maneira, dessa forma se você desenvolve usando o Docker, depois faz o deploy usando ele novamente, a mesma máquina que você usou para desenvolver vai ser recriada no servidor igual, o que evita o problema do "Na minha máquina funciona".
Instalação
Normalmente se tem dois caminhos para instalar o Docker, pode ser feita via linha de comando para instalar a Docker Engine direto na sua máquina (o comando que você interage no terminal) ou podemos usar o Docker Desktop que oferece uma interface gráfica para usar o Docker e já resolve problemas de integração entre o seu sistema operacional e a Docker Engine.
Isso é importante pois um container docker é essencialmente uma máquina virtual Linux, então se você já está num ambiente Linux, a instalação é direta, baixou e já funciona.
O problema é que no Mac e no Windows, como eles são sistemas operacionais diferentes, eles não conseguem conversar direito com os containers, que são Linux, por isso, nesses SOs, o comum é usar o Docker Desktop para a instalação, pois ele é um instalador comum que já resolve a instalação da Engine e as adaptações para o seu sistema operacional falar com o Docker.
Se você está no Windows, a recomendação oficial é usar o Docker Desktop, entretanto, você pode ter problemas se o seu sistema operacional for muito antigo ou não tiver a virtualização ativada.
Nesses casos, o recomendado é usar o WSL2, inclusive essa é a recomendação oficial da equipe do Terminal Coffee, mesmo se você tiver um Windows atualizado, pois existe um bug comum no Windows onde se você não estiver rodando pelo WSL, algumas funcionalidades podem falhar.
Para seguir por esse caminho, vá para a seção de instalação por CLI
Instalação por Docker Desktop
1. Instale/ative o WSL 2
Abra o PowerShell como administrador e digite:
[Foto do PS como admin]
wsl --install
Reinicie o Windows se for solicitado.
Depois, confira:
wsl --status
E:
wsl -l -v
Sua distribuição deve aparecer usando WSL 2.
2. Instale o Docker Desktop
Baixe o instalador oficial do Docker Desktop e instale normalmente.
Durante a instalação, deixe selecionada a opção relacionada a:
Use WSL 2 instead of Hyper-V
em vez de configurar o Docker para usar Hyper-V, se o objetivo for trabalhar com WSL 2, já que isso facilita bastante o processo por não precisar habilitar o hyper-V pela BIOS.
Links para o instalador do Docker Desktop
Windows: https://docs.docker.com/desktop/setup/install/windows-install/ Mac: https://docs.docker.com/desktop/setup/install/mac-install/ Linux: https://docs.docker.com/desktop/setup/install/linux/
3. Abra o Docker Desktop
Depois da instalação, abra o Docker Desktop e aguarde ele inicializar.
Em:
Settings → General
confirme que a opção:
Use the WSL 2 based engine
está habilitada.
4. Integre sua distribuição WSL
No Docker Desktop, vá para:
Settings → Resources → WSL Integration
Você deverá encontrar sua distribuição, por exemplo:
Enable integration with my default WSL distro
☑ Ubuntu
Ative a integração para a distro que você utiliza.
Isso permite que, dentro do Ubuntu:
docker
funcione diretamente, mesmo que o Docker Engine esteja sendo gerenciado pelo Docker Desktop.
Mas e no Mac?
Aqui a vida é muito mais simples:
1. Instalar
brew install --cask docker
2. Abrir o Docker Desktop
open -a Docker
Na primeira execução, o macOS pode pedir autorização/permissão. Aceite os componentes solicitados.
3. Aguardar o Docker iniciar
Depois, confira no terminal:
docker version
Você deverá ver uma seção Client e outra Server.
Instalação por Docker Engine
Se você está no Linux, pode pular passo 4
Não é recomendado instalar manualmente no Mac
1. Primeiro, confirme que seu WSL é o WSL 2
No PowerShell do Windows:
wsl -l -v
Você deve ver algo parecido com:
NAME STATE VERSION
* Ubuntu Running 2
Se estiver VERSION 2, beleza.
2. Entre no Ubuntu
Abra o Ubuntu ou rode:
wsl
A partir daqui, os comandos são executados dentro do Linux.
3. Habilite o systemd no WSL
Essa é uma diferença importante em relação a uma instalação Linux tradicional.
Edite:
sudo nano /etc/wsl.conf
Coloque:
[boot]
systemd=true
Salve e saia.
Depois, no PowerShell, reinicie o WSL:
wsl --shutdown
Abra o Ubuntu novamente.
Confirme:
systemctl --version
Se aparecer a versão do systemd, está funcionando.
4. Remova pacotes antigos do Docker
No Ubuntu:
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
Se disser que alguns não estão instalados, tudo bem.
A documentação oficial recomenda remover esses pacotes antes da instalação do Docker Engine para evitar conflitos.
5. Adicione o repositório oficial do Docker
Primeiro:
sudo apt update
sudo apt install ca-certificates curl
Crie o diretório das chaves:
sudo install -m 0755 -d /etc/apt/keyrings
Baixe a chave:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
E permita que o APT leia:
sudo chmod a+r /etc/apt/keyrings/docker.asc
Agora adicione o repositório:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Depois:
sudo apt update
Esses são os passos atualmente indicados pelo próprio Docker para instalar o Engine no Ubuntu via APT.
6. Instale o Docker Engine
Agora:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Isso instala:
- Docker Engine (
docker-ce) - Docker CLI (
docker-ce-cli) - containerd
- Buildx
- Docker Compose
7. Verifique o serviço
Como configuramos o systemd:
sudo systemctl status docker
Você deve encontrar algo como:
Active: active (running)
Se não estiver rodando:
sudo systemctl start docker
8. Permita usar Docker sem sudo
Por padrão, o socket do Docker pertence ao root, então inicialmente você precisaria fazer:
sudo docker ps
Para poder fazer simplesmente:
docker ps
adicione seu usuário ao grupo docker:
sudo usermod -aG docker $USER
Depois feche o terminal do WSL e abra novamente.
Ou você pode atualizar os grupos da sessão com:
newgrp docker
A própria documentação do Docker recomenda essa configuração para executar o CLI sem sudo.
Hello World
Agora que nós terminamos de instalar o Docker, precisamos só testar se está funcionando, então para isso vamos fazer o famoso exercício de hello-world para criar nosso primeiro container com ele.
Se você usa o Docker Desktop verifique se ele está ligado antes de continuar
Primeiro vamos verificar novamente a instalação do Docker verificando a versão do Docker:
docker version
Agora vamos rodar o Docker:
docker run hello-world
E pronto, criamos o nosso primeiro container docker sem complicação.
Considerações Finais
Nessa aula aprendemos o que é o Docker, como instalar, e criamos nosso primeiro container.
Esperamos que você tenha gostado, qualquer dúvida também temos uma versão gravada dessa aula no YouTube. Pode deixar a sua dúvida lá avisando que você veio pelo site, e lembre-se de deixar o like e compartilhar o vídeo.
Obrigado e até a próxima aula.