Docker 🐳
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Docker

Tenha um ambiente de desenvolvimento pronto em minutos


Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mauricio Souza Menezes

  • Bacharel em Sistema de Informação - UnEB
  • Arquiteto/Desenvolvedor de Software (Renova)
  • Pesquisador em Computação e Bioinformática (G2BC)

Contato

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Objetivos da Apresentação

  1. Entender o que é Docker
  2. Explorar as vantagens de usar Docker
  3. Entender os conceitos de container e imagem
  4. Aprender sobre Dockerfile e Docker Compose
  5. Familiarizar-se com Docker Hub
  6. Exercitar a criação de containers e imagens
Objetivos Apresentação
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é Docker?

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é Docker?

  • Docker é uma plataforma de código aberto que permite automatizar a implantação, escalonamento e gerenciamento de aplicativos em contêineres.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é Docker? - Docker x Máquina Virtual

Docker Máquina Virtual
SO Compartilha o Kernel Kernel é virtualizado
Tempo de inicialização Segundos Minutos
Necessidade de memória Menor Maior
Necessidade de armazenamento Menor (Geralmente MB) Maior (Geralmente GB)
Portabilidade Mais portável Menos portável
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é Docker? - Docker x Máquina Virtual

  • Docker:
    • Abstração de um sistema operacional.
  • Máquina Virtual:
    • Abstração de um computador físico completo.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Por que usar Docker?

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Por que usar Docker?

center

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Por que usar Docker?

  • Ambiente de Desenvolvimento Padrão: Garante que todos os desenvolvedores tenham o mesmo ambiente de desenvolvimento.
  • Isolamento: Cada aplicativo é executado em um contêiner isolado.
  • Escalabilidade: Facilita a escalabilidade horizontal.
  • Portabilidade: Os contêineres podem ser executados em qualquer ambiente que suporte Docker.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Por que usar Docker?

  • Eficiência: Os contêineres são leves e consomem menos recursos do que as máquinas virtuais.
  • Flexibilidade: Os contêineres podem ser facilmente movidos entre ambientes de desenvolvimento, teste e produção.
  • Segurança: Os contêineres são isolados uns dos outros, o que ajuda a proteger os aplicativos de interferências externas.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um container?

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um container?

  • Um contêiner é uma unidade de software que empacota um aplicativo e suas dependências em um ambiente isolado.
  • Os contêineres são leves, portáteis e escaláveis, permitindo que os desenvolvedores executem aplicativos de forma consistente em diferentes ambientes.
  • Os contêineres são executados em um host e compartilham o kernel do sistema operacional com outros contêineres.
  • Os contêineres são isolados uns dos outros, o que ajuda a garantir que os aplicativos sejam executados de forma segura e eficiente.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é uma imagem?

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é uma imagem?

  • Uma imagem é um pacote de software que contém um aplicativo e suas dependências.
  • As imagens são usadas para criar contêineres, que são instâncias em execução de uma imagem.
  • As imagens são armazenadas em um registro de contêineres, como o Docker Hub, e podem ser compartilhadas e reutilizadas por outros desenvolvedores.
  • As imagens são criadas a partir de um arquivo chamado Dockerfile, que contém instruções para construir a imagem.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um Dockerfile?

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um Dockerfile?

  • Um Dockerfile é um arquivo de texto que contém instruções para construir uma imagem Docker.
  • O Dockerfile define o ambiente de execução do contêiner, incluindo as dependências necessárias para executar o aplicativo.
  • O Dockerfile é usado pelo comando docker build para criar uma imagem Docker a partir de um conjunto de instruções.
  • O Dockerfile é uma ferramenta poderosa para automatizar o processo de criação de imagens Docker e garantir a consistência do ambiente de desenvolvimento.
  • O Dockerfile é um arquivo de texto simples que pode ser versionado e compartilhado com outros desenvolvedores.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um Docker Compose?

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um Docker Compose?

  • Docker Compose é uma ferramenta que permite definir e executar aplicativos Docker multi-contêineres.
  • O Docker Compose usa um arquivo de configuração chamado docker-compose.yml para definir os serviços, volumes e redes que compõem o aplicativo.
  • O Docker Compose simplifica o processo de gerenciamento de aplicativos complexos e permite que os desenvolvedores definam a infraestrutura de aplicativos como código (IaC).
  • O Docker Compose é uma ferramenta poderosa para desenvolvedores que desejam automatizar o processo de criação, execução e gerenciamento de aplicativos Docker.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um Docker Hub?

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que é um Docker Hub?

  • Docker Hub é um serviço de registro de contêineres que permite armazenar, compartilhar e distribuir imagens Docker.
  • O Docker Hub é um repositório público de imagens Docker que podem ser usadas por desenvolvedores para criar aplicativos.
  • O Docker Hub oferece uma ampla variedade de imagens de aplicativos, bibliotecas e ferramentas que podem ser usadas para acelerar o desenvolvimento de aplicativos.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Instalação

Docker é multiplataforma e pode ser instalado em Windows, Linux e macOS.

Verificar se a instalação foi bem sucedida:

docker --version
docker-compose --version
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Principais Comandos (Imagens)

  • docker images: Lista as imagens disponíveis no host.
  • docker pull <imagem>: Baixa uma imagem do Docker Hub.
  • docker rmi <imagem>: Remove uma imagem do host.
  • docker build -t <nome>:<tag> .: Constrói uma imagem a partir de um Dockerfile.
  • docker push <nome>:<tag>: Publica uma imagem no Docker Hub.
  • docker inspect <imagem>: Exibe informações detalhadas sobre uma imagem.
  • docker history <imagem>: Exibe o histórico de camadas de uma imagem.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Principais Comandos (Contêineres)

  • docker ps: Lista os contêineres em execução.
  • docker ps -a: Lista todos os contêineres no host.
  • docker run <imagem>: Cria e executa um contêiner a partir de uma imagem.
  • docker start <contêiner>: Inicia um contêiner parado.
  • docker stop <contêiner>: Para um contêiner em execução.
  • docker rm <contêiner>: Remove um contêiner do host.
  • docker exec -it <contêiner> <comando>: Executa um comando em um contêiner em execução.
  • docker logs <contêiner>: Exibe os logs de um contêiner em execução.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Criação de uma Imagem

docker build -t myimage:1.0 .
  • -t myimage:1.0: Define o nome e a tag da imagem.
  • .: Especifica o diretório atual como contexto de construção.
  • docker images: Lista as imagens disponíveis no host.
  • docker history myimage:1.0: Exibe o histórico de camadas da imagem.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Criação de um Container

docker run -d -p 8080:80 --name webserver nginx
  • -d: Executa o contêiner em segundo plano.
  • -p 8080:80: Mapeia a porta 8080 do host para a porta 80 do contêiner.
  • --name webserver: Define o nome do contêiner como webserver.
  • nginx: Especifica a imagem a ser usada.
  • docker ps: Lista os contêineres em execução.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Acesso ao Container

docker exec -it webserver bash
  • -it: Habilita a interação com o terminal do contêiner.
  • webserver: Nome do contêiner.
  • bash: Shell a ser executado no contêiner.
  • exit: Sai do terminal do contêiner.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Conteinerizando uma Aplicação

  • Criar um arquivo Dockerfile na raiz do projeto.
  • Adicionar as instruções necessárias para construir a imagem.
  • Executar o comando docker build -t myapp:1.0 . para criar a imagem.
  • Executar o comando docker run -d -p 8080:80 --name myapp myapp:1.0 para criar o contêiner.
  • Acessar a aplicação em http://localhost:8080.
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Exemplo de Dockerfile

# Use an official Python runtime as a parent image
FROM python:3.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

Mão na Massa - Exemplo de Docker Compose

version: '3'
services:
  web:
    build: .
    ports:
      - '8080:80'
  db:
    image: postgres
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

O que estudar agora?

  • Gestão de Volumes e Networks
  • Orquestração de Contêineres
    • Docker Swarm
    • Kubernetes
    • Terraform
    • Ansible
  • Publicação de uma imagem no Docker Hub
Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

OBRIGADO❣️

Tenha um ambiente de desenvolvimento pronto em minutos
Docker 🐳

DÚVIDAS QUE O CHATGPT NÃO RESPONDA

Tenha um ambiente de desenvolvimento pronto em minutos