Docker básico
Neste módulo, os estagiários aprenderão os conceitos básicos do Docker e como usá-lo para facilitar o desenvolvimento e a implantação de aplicações.
Aulas
Aula LinuxTips
Vídeos Diolinux
O mínimo que você precisa saber sobre Docker!
Desafios
Desafio 1: Introdução ao Docker
Objetivo: Aprenda os fundamentos do Docker, sua história e como ele funciona, incluindo a arquitetura de contêineres e imagens.
Tópicos a serem abordados:
- História do Docker
- Conceito de contêineres
- Arquitetura do Docker
- Imagens e contêineres
Atividades propostas:
- Pesquise sobre a história do Docker e como ele se tornou uma ferramenta essencial no desenvolvimento e implantação de software.
- Entenda o conceito de contêineres e como eles diferem das máquinas virtuais tradicionais.
- Estude a arquitetura do Docker, incluindo o Docker Engine, o Docker Hub e os componentes-chave, como imagens e contêineres.
- Aprenda como as imagens e os contêineres funcionam, incluindo a camada de sistema de arquivos e a relação entre imagens e contêineres.
Ao concluir este desafio, o estagiário terá uma compreensão básica do Docker, sua arquitetura e como ele funciona, incluindo o conceito de contêineres e imagens.
Desafio 2: Instalação do Docker
Objetivo: Instalar o Docker no seu computador e verificar se ele está funcionando corretamente.
Tópicos a serem abordados:
- Requisitos do sistema
- Instalação do Docker
- Verificação da instalação
Atividades propostas:
- Verifique os requisitos do sistema para instalar o Docker no seu computador (Windows, macOS ou Linux).
- Siga as instruções oficiais de instalação do Docker para seu sistema operacional:
- Após a instalação, verifique se o Docker está funcionando corretamente executando o comando
docker --version
no terminal ou prompt de comando. - Teste a instalação executando um contêiner de teste com o comando
docker run hello-world
.
Ao concluir este desafio, o estagiário terá o Docker instalado e funcionando corretamente no seu computador.
Desafio 3: Executando contêineres
Objetivo: Praticar a execução de contêineres com comandos básicos do Docker, como docker run
, docker ps
, docker stop
e docker rm
.
Tópicos a serem abordados:
- Execução de contêineres
- Listagem de contêineres
- Parando e removendo contêineres
Atividades propostas:
- Execute um contêiner do nginx com o comando:
docker run --name my-nginx -p 80:80 -d nginx
. Isso iniciará um contêiner com o servidor web nginx e mapeará a porta 80 do seu computador para a porta 80 do contêiner. - Verifique se o contêiner está em execução com o comando:
docker ps
. Isso listará todos os contêineres em execução no seu computador. - Acesse
http://localhost
no seu navegador. Você deve ver a página padrão do nginx. - Pare o contêiner do nginx com o comando:
docker stop my-nginx
. - Verifique se o contêiner foi parado com o comando:
docker ps -a
. Isso listará todos os contêineres no seu computador, incluindo os que estão parados. - Remova o contêiner do nginx com o comando:
docker rm my-nginx
. - Verifique se o contêiner foi removido com o comando:
docker ps -a
.
Ao concluir este desafio, o estagiário terá praticado a execução, listagem, parada e remoção de contêineres usando comandos básicos do Docker.
Desafio 4: Trabalhando com imagens
Objetivo: Aprender a trabalhar com imagens Docker usando comandos como docker images
, docker pull
, docker rmi
e docker search
.
Tópicos a serem abordados:
- Listagem de imagens
- Download de imagens
- Remoção de imagens
- Pesquisa de imagens
Atividades propostas:
- Liste todas as imagens disponíveis localmente com o comando:
docker images
. Isso mostrará informações sobre as imagens que você já baixou. - Baixe a imagem do Redis com o comando:
docker pull redis
. Isso fará o download da imagem oficial do Redis do Docker Hub. - Verifique se a imagem do Redis foi baixada com o comando:
docker images
. - Pesquise imagens relacionadas ao Node.js no Docker Hub com o comando:
docker search node
. Isso retornará uma lista de imagens disponíveis relacionadas ao Node.js. - Remova a imagem do Redis com o comando:
docker rmi redis
. - Verifique se a imagem foi removida com o comando:
docker images
.
Ao concluir este desafio, o estagiário terá praticado a listagem, download, pesquisa e remoção de imagens Docker usando comandos específicos.
Desafio 5: Criando um Dockerfile para uma aplicação Laravel com Sail
Objetivo: Criar um Dockerfile para uma aplicação Laravel e executá-la usando o Laravel Sail.
Tópicos a serem abordados:
- Instalação do Laravel Sail
- Configuração do Dockerfile
- Construção de uma imagem personalizada
- Execução da aplicação Laravel com Sail
Atividades propostas:
ATENÇÃO
Antes de prosseguir, leia a documentação oficial do Laravel Sail para entender como ele funciona e como ele pode ser integrado a um projeto Laravel existente. Lá existem varias opções de setar os arquivos de configuração do Sail e os containers que serão utilizados dependendo das tecnologias que você irá utilizar no seu projeto.
- Instale o Laravel Sail no seu projeto Laravel existente ou crie um novo projeto Laravel com o Sail já integrado usando o comando:
curl -s "https://laravel.build/example-app" | bash
Substitua "example-app" pelo nome do seu projeto.
Na raiz do projeto, você encontrará o arquivo "docker-compose.yml" e a pasta "docker". Esses arquivos já contêm as configurações necessárias para executar a aplicação Laravel com o Sail.
O Sail já possui um Dockerfile na pasta "docker" chamado "Dockerfile.laravel". Abra-o e verifique seu conteúdo. Ele já contém as instruções necessárias para construir uma imagem com o ambiente PHP e todas as dependências necessárias para o Laravel.
Abra o terminal e navegue até a raiz do projeto Laravel.
Execute o comando
./vendor/bin/sail build
para construir a imagem Docker. Isso pode levar algum tempo na primeira execução.Após a construção da imagem, inicie a aplicação Laravel com o Sail usando o comando
./vendor/bin/sail up
. O Sail iniciará todos os serviços necessários, incluindo o servidor web e o banco de dados.Abra o navegador e visite
http://localhost
para visualizar a aplicação Laravel em execução.
Ao concluir este desafio, o estagiário terá configurado e executado uma aplicação Laravel usando o Laravel Sail e o Docker.
Desafio 6: Utilização do Docker Composer
Objetivo: Aprender a utilizar o Docker Compose para gerenciar múltiplos contêineres de uma aplicação.
Tópicos a serem abordados:
- Introdução ao Docker Compose
- Instalação do Docker Compose
- Criação e configuração de um arquivo docker-compose.yml
- Comandos básicos do Docker Compose
- Uso do Docker Compose em um projeto prático
Atividades propostas:
Pesquise sobre o Docker Compose e entenda sua utilidade para gerenciar aplicativos que consistem em múltiplos contêineres.
Instale o Docker Compose em seu computador, seguindo as instruções fornecidas na documentação oficial: https://docs.docker.com/compose/install/
Crie um arquivo
docker-compose.yml
para um projeto que inclua dois contêineres: um para um servidor web e outro para um banco de dados. Por exemplo, você pode usar a imagemnginx
para o servidor web e a imagemmysql
para o banco de dados. Configure o arquivodocker-compose.yml
com as informações necessárias, como a versão do Docker Compose, serviços, imagens, portas e volumes.Exemplo de configuração básica:
version: '3'
services:
mariadb:
command:
- --table_definition_cache=2048
- --innodb-buffer-pool-size=3G
image: 'mariadb:10'
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: 'password'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: 'meu_banco_de_dados'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'password'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sail-mariadb:/var/lib/mysql'
networks:
- sail
- Aprenda e pratique os comandos básicos do Docker Compose:
docker-compose up
: Inicia e executa os contêineres descritos no arquivodocker-compose.yml
.docker-compose down
: Interrompe e remove os contêineres, redes e volumes definidos no arquivodocker-compose.yml
.docker-compose ps
: Lista os contêineres em execução e seu status.docker-compose logs
: Exibe os logs dos contêineres.docker-compose build
: Constrói as imagens, caso você esteja usando um Dockerfile personalizado.
- Utilize o Docker Compose em um projeto prático. Por exemplo, crie uma aplicação web simples que se conecte a um banco de dados MySQL. Configure o projeto para ser executado com o Docker Compose e teste a funcionalidade da aplicação.
Ao concluir este desafio, o estagiário terá aprendido a utilizar o Docker Compose para gerenciar e executar aplicativos que envolvem múltiplos contêineres, tornando o processo de desenvolvimento e implantação mais eficiente e organizado.
Desafio 7: Utilização do Portainer
Objetivo: Aprender a usar o Portainer, uma interface gráfica para gerenciar contêineres e imagens Docker.
Tópicos a serem abordados:
- Instalação do Portainer
- Configuração e conexão com o Docker
- Gerenciamento de contêineres e imagens
- Explorar recursos e funcionalidades do Portainer
Atividades propostas:
- Instale o Portainer em seu computador executando o seguinte comando no terminal:
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Esse comando baixa a imagem do Portainer e executa em um contêiner com as portas 8000 e 9000 expostas.
Após a instalação, abra o navegador e visite
http://localhost:9000
para acessar a interface do Portainer. Complete o processo de configuração criando um nome de usuário e senha.Conecte o Portainer ao Docker, selecionando a opção "Docker local" e clicando em "Conectar". Agora, você verá um painel com informações sobre contêineres, imagens, volumes e redes.
Explore a interface do Portainer e pratique as seguintes atividades:
- Visualize a lista de contêineres e suas informações, como status, imagem e porta.
- Inicie, pare, reinicie ou remova contêineres.
- Crie um novo contêiner a partir de uma imagem.
- Visualize a lista de imagens e suas informações, como tamanho e tags.
- Baixe uma nova imagem a partir do registro do Docker.
- Remova imagens não utilizadas.
- Explore outros recursos, como gerenciamento de volumes e redes.
Ao concluir este desafio, o estagiário terá aprendido a gerenciar contêineres e imagens Docker usando o Portainer, uma interface gráfica intuitiva.
Portainer opção 2 (mais fácil)
Adicione essas instruções para o seu docker-compose.yml
...
portainer:
image: portainer/portainer-ce:latest
restart: unless-stopped
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./portainer-data:/data
ports:
- 9000:9000
...
O servidor estará disponível em http://localhost:9000. Lembrando que no seu primeiro acesso ele pedirá para criar um usuário e senha.