Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
14 de Dec de 2019•0 gostou•236 visualizações
Baixar para ler offline
Denunciar
Software
Apresentação sobre primeiros passos no uso de Docker, bem como dicas e truques na manipulação de containers. Palestra realizada para profissionais da UNICID na cidade de São Paulo-SP no dia 29/11/2019.
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
2. • 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 /
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
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)
9. 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)
10. 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
11. Por que utilizar containers Docker?
• Isolamento
• Utilização mais racional de recursos
• Rapidez no deployment
• Menor dependência do ambiente
16. 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
18. Docker + SQL Server
+
• Criação de containers do SQL Server 2017 e 2019 em
portas diferentes
19. Criando uma imagem e publicando no Docker Hub
+
• Uso do NGINX para a geração de uma imagem com um
site estático
20. 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)
23. 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
24. 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
25. Docker Compose: exemplo prático
Criação de um ambiente com:
• MongoDB + Mongo Express
• Redis
• Neo4j
26. E quanto ao suporte a Docker no Microsoft Azure?
+
27. Suporte a Docker no Azure
• Azure Container Instances
• Azure Container Registry
• Azure Web App for Containers
• Azure Kubernetes Service (AKS)
31. 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?
33. Azure Web App for Containers
• Hospedagem de aplicações
• Uso de Containers Docker (imagens
Linux e Windows)
• Suporte a Continuous Integration
34. Azure Web App for Containers
• Escalabilidade (vertical e horizontal)
• Suporte a HTTPS
• Criação de recursos a partir de imagens
ou Docker Compose
35. 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
37. 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
38. 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
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
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
44. 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)