• Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience
Contributor (MTAC)
• Mais de 15 anos de experiência na área de
Tecnologia
• Autor Técnico e Palestrante
• Um dos organizadores do Canal .NET, do .NET
São Paulo e do DevOps Professionals
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
Desconto de 20%:
http://bit.ly/anp-devops-fujitsu
www.azurenapratica.com
Black Week - Desconto de 25%:
http://bit.ly/anp-serverless-unicid
www.azurenapratica.com
Agenda
• Docker: primeiros passos
• Dicas e truques na utilização de containers Docker
• Exemplos práticos
Um pouco mais sobre
Conceitos Fundamentais
• Imagens → base para criação de
containers, são geradas a partir do
arquivo Dockerfile; contém todos os
arquivos e dependências de uma
aplicação – incluindo sistema operacional
• Containers → pacote com tudo que é
necessário para a execução de uma
aplicação (serviço, site, API)
Onde encontrar imagens?
Imagens Alpine
• Baseadas na distribuição Alpine Linux
• Preocupação com segurança e
simplicidade
• Imagens Docker menores (contendo
apenas o mínimo necessário para a
execução da aplicação)
Principais usos
• Deployment de APIs REST e sites
• Arquitetura de microserviços
• Soluções escaláveis através do
uso de orquestradores e
alternativas do tipo PaaS
Por que utilizar containers Docker?
• Isolamento
• Utilização mais racional de recursos
• Rapidez no deployment
• Menor dependência do ambiente
E com isto temos o fim da “desculpa”...
Mas é só isso?
O que mais podemos utilizar com Docker?
• Serviços de processamento
contínuo
• Servidores de bancos de dados
• Rotinas de processamento em
geral
Algumas tecnologias com suporte a Docker
Montando ambientes de testes com containers
• Rapidez na instalação
• Desinstalação sem grandes dificuldades
• Diferentes versões de um software numa mesma máquina
Criando containers Docker na prática
Docker + SQL Server
+
• Criação de containers do SQL Server 2017 e 2019 em
portas diferentes
Criando uma imagem e publicando no Docker Hub
+
• Uso do NGINX para a geração de uma imagem com um
site estático
Criando uma imagem com ASP.NET Core 3.0
• API REST criada com o ASP.NET
Core 3.0
• Contagem de acessos/requisições
recebidas (publicada no Docker
Hub como a imagem
renatogroffe/apicontagem-3-0-
alpine)
Um questionamento importante...
• Como evitar criar separamente múltiplos
containers, que possuem algum tipo de
relação entre si?
Docker Compose é a resposta!
Docker Compose: uma visão geral
• Criação e execução conjunta dos múltiplos
containers de uma aplicação
• Facilita o deployment em ambientes de
desenvolvimento e testes
• Suporte a integração contínua
Docker Compose: uma visão geral
• É comum a criação de networks (redes) do
Docker para deployment
• Arquivo com configurações no formato YAML
(docker-compose.yml)
• Suporte também do Visual Studio Code
Docker Compose: exemplo prático
Criação de um ambiente com:
• MongoDB + Mongo Express
• Redis
• Neo4j
E quanto ao suporte a Docker no Microsoft Azure?
+
Suporte a Docker no Azure
• Azure Container Instances
• Azure Container Registry
• Azure Web App for Containers
• Azure Kubernetes Service (AKS)
Azure Container Instances
• Criação de containers de forma
descomplicada
Azure Container Registry
• Armazenamento de imagens
Docker privadas na nuvem
• Alternativa ao Docker Hub /
Docker Store
Azure Container Registry – Publicação
docker tag apicontagem:latest groffecr.azurecr.io/apicontagem
docker login groffecr.azurecr.io -u USUÁRIO -p SENHA
docker push groffecr.azurecr.io/apicontagem
Dificuldades na adoção de containers...
• Como escalar containers?
• Como garantir o trabalho coordenado
entre os diferentes containers de uma
aplicação?
• Como detectar containers com falhas e
corrigir isso automaticamente?
E como superar tais dificuldades?
Azure Web App for Containers
• Hospedagem de aplicações
• Uso de Containers Docker (imagens
Linux e Windows)
• Suporte a Continuous Integration
Azure Web App for Containers
• Escalabilidade (vertical e horizontal)
• Suporte a HTTPS
• Criação de recursos a partir de imagens
ou Docker Compose
Deployment Automatizado
• Fácil integração com Azure DevOps
• Build Automatizado com publicação de
imagens e deployment no Azure App
Service/Azure Web App for Containers
Utilizando orquestradores…
Azure Kubernetes Service (AKS)
+
Kubernetes: uma visão geral
• Também conhecido como K8s ou kube
• Desenvolvido originalmente pela Google
• Mantido pela Cloud Native Computing Foundation
• Escrito em Go
• Open source
Kubernetes: uma visão geral
• Cluster com máquina Master e Nodes
• Criação de objetos através de arquivos no formato YAML
• Funcionalidades para gerenciamento, orquestração e auto
recuperação de containers
• kubectl → ferramenta de linha de comando
• Minikube → ambiente de testes
Kubernetes: arquitetura
kubectl
Kubernetes: arquitetura
• Pod
• Grupo de um ou mais containers
implantados em um Node (Nó)
• Compartilham o mesmo endereço IP,
IPC, nome do host e outros recursos
POD
Kubernetes: arquitetura
• Deployment
• Abstração de um Pod com
recursos adicionais
• Conta com gerenciamento de
estados
Deployment
POD
Kubernetes: arquitetura
• Service
• Objeto mais estável (Pods são criados ou
removidos continuamente)
• Cuidará do acesso aos Pods, funcionando
como um Load Balancer
Kubernetes: arquitetura
Exemplo Prático
• API REST criada com o ASP.NET Core 3.0
• Será utilizada a mesma API de contagem
de acessos dos exemplos anteriores
(publicada no Docker Hub como a imagem
renatogroffe/apicontagem-3-0-alpine)
• Criação de um cluster através do Azure
Kubernetes Service (AKS)
medium.com/@renato.groffe/

Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019

  • 2.
    • Microsoft MostValuable Professional (MVP) • Multi-Plataform Technical Audience Contributor (MTAC) • Mais de 15 anos de experiência na área de Tecnologia • Autor Técnico e Palestrante • Um dos organizadores do Canal .NET, do .NET São Paulo e do DevOps Professionals Renato Groffe h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
  • 3.
    Renato Groffe -Contatos h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e / /renatogroffe /in/renatogroffe /canaldotnet /renatogroffe /canaldotnet /renatogroff
  • 4.
    Desconto de 20%: http://bit.ly/anp-devops-fujitsu www.azurenapratica.com BlackWeek - Desconto de 25%: http://bit.ly/anp-serverless-unicid www.azurenapratica.com
  • 5.
    Agenda • Docker: primeirospassos • Dicas e truques na utilização de containers Docker • Exemplos práticos
  • 6.
  • 7.
    Conceitos Fundamentais • Imagens→ base para criação de containers, são geradas a partir do arquivo Dockerfile; contém todos os arquivos e dependências de uma aplicação – incluindo sistema operacional • Containers → pacote com tudo que é necessário para a execução de uma aplicação (serviço, site, API)
  • 8.
  • 9.
    Imagens Alpine • Baseadasna distribuição Alpine Linux • Preocupação com segurança e simplicidade • Imagens Docker menores (contendo apenas o mínimo necessário para a execução da aplicação)
  • 10.
    Principais usos • Deploymentde APIs REST e sites • Arquitetura de microserviços • Soluções escaláveis através do uso de orquestradores e alternativas do tipo PaaS
  • 11.
    Por que utilizarcontainers Docker? • Isolamento • Utilização mais racional de recursos • Rapidez no deployment • Menor dependência do ambiente
  • 12.
    E com istotemos o fim da “desculpa”...
  • 13.
  • 14.
    O que maispodemos utilizar com Docker? • Serviços de processamento contínuo • Servidores de bancos de dados • Rotinas de processamento em geral
  • 15.
    Algumas tecnologias comsuporte a Docker
  • 16.
    Montando ambientes detestes com containers • Rapidez na instalação • Desinstalação sem grandes dificuldades • Diferentes versões de um software numa mesma máquina
  • 17.
  • 18.
    Docker + SQLServer + • Criação de containers do SQL Server 2017 e 2019 em portas diferentes
  • 19.
    Criando uma imageme publicando no Docker Hub + • Uso do NGINX para a geração de uma imagem com um site estático
  • 20.
    Criando uma imagemcom ASP.NET Core 3.0 • API REST criada com o ASP.NET Core 3.0 • Contagem de acessos/requisições recebidas (publicada no Docker Hub como a imagem renatogroffe/apicontagem-3-0- alpine)
  • 21.
    Um questionamento importante... •Como evitar criar separamente múltiplos containers, que possuem algum tipo de relação entre si?
  • 22.
    Docker Compose éa resposta!
  • 23.
    Docker Compose: umavisão geral • Criação e execução conjunta dos múltiplos containers de uma aplicação • Facilita o deployment em ambientes de desenvolvimento e testes • Suporte a integração contínua
  • 24.
    Docker Compose: umavisão geral • É comum a criação de networks (redes) do Docker para deployment • Arquivo com configurações no formato YAML (docker-compose.yml) • Suporte também do Visual Studio Code
  • 25.
    Docker Compose: exemploprático Criação de um ambiente com: • MongoDB + Mongo Express • Redis • Neo4j
  • 26.
    E quanto aosuporte a Docker no Microsoft Azure? +
  • 27.
    Suporte a Dockerno Azure • Azure Container Instances • Azure Container Registry • Azure Web App for Containers • Azure Kubernetes Service (AKS)
  • 28.
    Azure Container Instances •Criação de containers de forma descomplicada
  • 29.
    Azure Container Registry •Armazenamento de imagens Docker privadas na nuvem • Alternativa ao Docker Hub / Docker Store
  • 30.
    Azure Container Registry– Publicação docker tag apicontagem:latest groffecr.azurecr.io/apicontagem docker login groffecr.azurecr.io -u USUÁRIO -p SENHA docker push groffecr.azurecr.io/apicontagem
  • 31.
    Dificuldades na adoçãode containers... • Como escalar containers? • Como garantir o trabalho coordenado entre os diferentes containers de uma aplicação? • Como detectar containers com falhas e corrigir isso automaticamente?
  • 32.
    E como superartais dificuldades?
  • 33.
    Azure Web Appfor Containers • Hospedagem de aplicações • Uso de Containers Docker (imagens Linux e Windows) • Suporte a Continuous Integration
  • 34.
    Azure Web Appfor Containers • Escalabilidade (vertical e horizontal) • Suporte a HTTPS • Criação de recursos a partir de imagens ou Docker Compose
  • 35.
    Deployment Automatizado • Fácilintegração com Azure DevOps • Build Automatizado com publicação de imagens e deployment no Azure App Service/Azure Web App for Containers
  • 36.
  • 37.
    Kubernetes: uma visãogeral • Também conhecido como K8s ou kube • Desenvolvido originalmente pela Google • Mantido pela Cloud Native Computing Foundation • Escrito em Go • Open source
  • 38.
    Kubernetes: uma visãogeral • Cluster com máquina Master e Nodes • Criação de objetos através de arquivos no formato YAML • Funcionalidades para gerenciamento, orquestração e auto recuperação de containers • kubectl → ferramenta de linha de comando • Minikube → ambiente de testes
  • 39.
  • 40.
    Kubernetes: arquitetura • Pod •Grupo de um ou mais containers implantados em um Node (Nó) • Compartilham o mesmo endereço IP, IPC, nome do host e outros recursos POD
  • 41.
    Kubernetes: arquitetura • Deployment •Abstração de um Pod com recursos adicionais • Conta com gerenciamento de estados Deployment POD
  • 42.
    Kubernetes: arquitetura • Service •Objeto mais estável (Pods são criados ou removidos continuamente) • Cuidará do acesso aos Pods, funcionando como um Load Balancer
  • 43.
  • 44.
    Exemplo Prático • APIREST criada com o ASP.NET Core 3.0 • Será utilizada a mesma API de contagem de acessos dos exemplos anteriores (publicada no Docker Hub como a imagem renatogroffe/apicontagem-3-0-alpine) • Criação de um cluster através do Azure Kubernetes Service (AKS)
  • 46.