
- Apresentação do Curso
- Apresentação dos conceitos
- Virtualização
- Contêineres
- Porque usar contêineres
- O que é o Docker
- Qual o objetivo do Docker
- Como o Docker Funciona
- O que é um contêiner
- Contêiner e Imagem
- Diferença Contêiner e Maquina Virtual
- Arquitetura Docker
- Preparando o ambiente
- Instalando a VirtualBox da Oracle
- Criando Máquina Virtual Linux
- Instalando o Ubuntu 18.04 LTS
- Instalando o Docker no Linux
- Opção - Docker for Mac
- Opção - Docker for Windows
- Docker para Linux CE no Ubuntu
- Instruções de instalação
- Verificando a instalação
- O que é o .NET Core SDK 2.1
- Componentes do .NET Core SDK
- Roteiro de instalação no Ubuntu
- Verificando a instalação
- O que é o Visual Studio Code
- Instalando o VS Code no Ubuntu
- Instalando as extensões: C#, C# Extensions
- Verificando a instalação
- Opção - Docker Desktop
- Requisitos para instalação no Windows
- Habilitando a virtualização e o Hiper V
- Opção Docker ToolBox for Windows
- Instalando o Docker Desktop no Windows 10
- Como funciona o Docker no Windows
- Verificando o ambiente Docker no Windows
- Criando um contêiner Docker : hello-world
- Verificando as imagens locais
- Verificando os contêineres locais
- Opções de configurações Docker no Windows
- Criando contêiner a partir de imagens
- Usando o modo Cliente
- Ajustando o ambiente LInux
- Criando o contêiner hello-world
- Usando imagens prontas no Docker Hub
- Fluxo de criação do contêiner: docker run
- Verifiando o contêiner criado e as imagens
- Criando contêineres
- Executando comandos em contêineres
- Baixando imagens prontas do Docker Hub
- Características dos contêineres
- Comandos usados para os contêineres
- A nova sintaxe dos comandos Docker
- A nova forma de versionamento do Docker
- Como funciona a estrutura da nova sintaxe
- Mapeando portas em contêineres
- Porque mapear portas
- Mapeando portas do contêiner para o exterior
- Como funciona o mapeamento de portas
- Comando Docker para mapear portas
- Mapeando diretórios para um contêiner
- Porque mapear pastas
- Como funciona o mapeamento de pastas
- Comando Docker para mapear pastas
- Criando um contêiner usando uma imagem da Microsoft
- Criando uma aplicação .NET Core do tipo Console
- Usando a imagem microsoft/dotnet:2.1-sdk
- Usando os comandos NET CLI para criar o projeto Console
- Criando o contêiner no modo interativo
- Entrando no contêiner e verificando o ambiente
- O que é uma imagem Docker
- Como funcionam as imagens
- Imagens são classes, contêineres são objetos
- O repositório de imagens Docker Hub
- A composição das imagens
- Imagens são formadas por camadas somente leitura
- Criando um contêiner a partir de uma imagem
- Os benefícios das imagens
- A estratégia : copy-on-write
- Como criar imagens : docker build -t <imagem>
- O arquivo Dockerfile
- Criando imagens customizadas a partir de imagens base
- Usando o arquivo Dockerfile
- O que é o Dockerfile e como funciona
- O processo de criação de imagens : build
- Os comandos Dockerfile
- Roteiro para criar imagem usando Dockerfile
- O comando docker built -t <imagem>
- Publicando imagens com : docker push
- Apresentando os principais comandos
- Aplicando os principais comandos
- Bainxando imagens, Criando imagens, exibindo imagens
- Inspecionando imagens, tagueando imagens
- Verificando o histórico da imagem
- Removendo imagens
- Verificando o ambiente
- Criando o projeto ASP .NET Core MVC
- Implementando um Repositório
- Criando as Views
- Buildando e executando o projeto ASP .NET Core MVC
- Testando a aplicação ASP .NET Core MVC
- Publicando a aplicação ASP .NET Core MVC
- Criando a imagem para a aplicação MVC
- Criando o arquivo Dockerfile na raiz do projeto
- Usando a imagem base : microsoft/dotnet:2.1-aspnetcore-runtime
- Criando um contêiner com base na imagem gerada
- Publicando imagens criadas
- Enviando imagens no Docker Hub
- Criando uma conta no Docker Hub
- Usando repositórios públicos e privados
- Logando na sua conta e enviando a imagem
- Preparando as imagens
- Enviando as imagens para o repositório
Exercícios sobre Imagens do Docker
- O que são os Volumes no Docker
- Como funcionam os volumes Docker
- Por que usar Volumes
- Persistindo informações usando Volumes
- Principais usos dos Volumes
- Criando Volumes no Docker
- Criando Volume no Docker
- Os principais comandos usados com Volumes
- Usando o volume em um contêiner MySQL
- Mapeando o volume para a pasta /var/bin/mysql
- Criando a imagem do MySQL usando a imagem base
- Criando um contêiner MySQL e usando o Volume
- Testando o contêiner MySQL e o volume criado
- Ajustando a aplicação ASP .NET Core
- Incluindo o EF Core para acessar o MySQL
- Criando um Repositório para dados
- Populando a tabela do MySQL usando Migrations
- Criando uma migração pendente para usar na inicialização
- Definindo a string de conexão com o MySQL
- Baixando a imagem do MySQL 5.7
- Verificando a seção Volumes da imagem
- Criando um Volume para armazenar dados
- Criar imagem MySql
- Criar o contêiner MySQL mapeando o volume
- Criando uma nova imagem para App MVC
- Publicando a aplicação
- Criando o Dockerfile
- Criando a nova imagem: docker build -t <img>
- Criando o contêiner da app MVC
- Realizar a conexão com o contêiner MySQL
- Usando redes virtuais para conexão entre contêineres
- Obtendo o endereço IP do MySQL
- Criar o contêiner MVC mapeando para IP do MySQL
- Acessando o contêiner MySQL
- Verificando o banco de dados criado na migração
- Conceitos sobre redes definidas por software
- As redes virtuais criadas pelo Docker
- As redes : bridge, none e host
- A comunicação entre contêineres via rede virtuais
- Inspecionando redes do docker
- Fluxo de comunicação usando rede virtual
- A rede padrão bridge do Docker
- Inspecionando os IPs atribuidos aos contêineres
- Verificando a comunicação entre os contêineres: ping
- Criando redes customizadas: docker network create
- Criando redes personalizadas
- Criando dois contêineres
- Fazendo a comunicação entre os contêineres
- Associando o contêiner a uma rede customizada
- Conectando um contêinere a uma rede
- Redes virtuais se comportam como redes físicas
- Escalando a aplicação criando contêineres
- Criando um novo contêiner para a aplicação MVC
- Acessando os contêineres na mesma rede em portas distintas
- Fluxo de comunicação da aplicação MVC
- Usando redes customizada para comunicação entre contêineres
- Usando o comando : docker network create <nome_rede>
- Conectando um contêinere a uma rede customizada
- Criando as redes : frontend e backend
- Associando as redes às aplicações MVC e MySQL
- Conectando um contêiner a uma rede customizada
- Verificando a comunicação entre os contêineres via rede customizada
- Usando um balanceador de carga HAproxy
Link da documentação para o HAproxy.cfg : https://www.haproxy.com/blog/the-four-essential-sections-of-an-haproxy-configuration/
- Criando o arquivo de configuração haproxy.cfg
- Criando um contêiner para o balanceador de carga
- Acessando a aplicação MVC via balanceador de carga
- O que é o Docker-Compose
- Como funciona o Docker-Compose
- Porque usar o Docker Compose
- Gerenciando aplicações complexas
- Instalando o Docker-Compose no Linux
- Orquestrando os contêineres MVC, MySQL e LoadBalancer
- Definindo o ambiente
- Criando o arquivo de composição: docker-compose.yml
- Usando o formato YAML
- As seções do arquivo de composição: version, volumes, networks e services
- Processando o arquivo de composição : docker-compose -f build
- Definindo a seção services para descrever os serviços
- Definindo os contêineres para o mysql
- Iniciando a descrição do serviço para criar o contêiner
- Usando as diretivas: image, volumes, networks, environment
- Processando o arquivo de composição : docker-compose build
- Processando o arquivo e inicializando os serviços : docker-compose up
- Removendo os contêineres, volumes e redes: docker-compose down -v
- Definindo um script SQL para popular os dados iniciais
- Definindo o mapeamento do volume para o script criado no arquivo docker-compose
- Verificando a sintaxe : docker-compose build
- Verificando os contêineres criados e o log gerado
- Entrar no contêiner MySQL e verificar os dados criados
- Removendo tudo : docker-compose down -v
- Definindo o serviço mvc no arquivo docker-compose
- Definindo a seção mvc
- Definindo um build a partir do Dockerfile
- Definindo as redes virtuais
- Mapeando as portas para o contêiner
- Indicando a dependência do serviço mvc do serviço mysql
- Processando o arquivo docker-compose
- Testando a aplicação MVC acessando o MySQL
- Fazendo o deploy da aplicação MVC no contêiner Docker
- Criando uma nova imagem para deploy no contêiner
- Usando a imagem base: microsoft/dotnet:2.1-sdk
- Definindo o arquivo Dockerfile.dev
- Definindo o arquivo docker-compose.dev
- Criando a imagem customizada
- Processando o arquivo de composição
- Otimizando o arquivo Dockerfile e a imagem gerada
- Usando o recurso : multi-stage build
- Usando mais de um comando FROM
- Nomeando cada novo estágio usando a instrução AS
- Copiando os arquivos existentes em estágios anteriores
- Criando o arquivo Dockerfile.multi
- Criando o arquivo docker-compose.multi
- Processando o arquivo de composição
- Instalando a extensão Docker no Visual Studio Code
- Gerenciando contêineres, imagens e repositórios no VS Code
- Acessando os comandos e sua documentação nos arquivos Dockerfile e docker-compose
- Gerando de forma automática o Dockerfile
Apresentação dos objetivos da Seção
Instalação do Docker Desktop for Windows no Windows 10 com WSL 2
Testando a instalação do Docker Desktop for Windows
Apresentando o suporte ao Docker no VS 2019 Community : Executando os contêiners Docker e publicando imagens a partir do Visual Studio
Habilitando o suportet ao Docker em um novo projeto no VS 2019
Habilitando a Orquestração de contêiners no Visual Studio 2019 Community
Testando a ASP.NET Core WEB API acessando o contêiner do MongoDB
Configurando os arquivos docker-compose
Executando o docker-compose para criar as imagens e contêiners e acessar os dados do mongo na API
Criando uma ASP.NET Core WEB API para acessar o SQL Server usando o EF Core e orquestrando os contêineres usando o Docker-Compose
Criando a Web API ASP .NET Core para Acessar o MySQL : Criando o projeto no VS 2019
Definindo a string de conexão, registrando os serviços e criando o controlador ProductsController
Testando a API criada para acessar o a instância do MySQL Local
Gerando o arquivo Dockerfile e o arquivo docker-compose.yml via Visual Studio 2019
Definindo o arquivo para criar a imagem e o contêiner da API no arquivo docker-compose
Definindo o serviço para criar o contêiner do MySQL a partir da imagem obtida do Docker Hub
Realizar a orquestração dos contêineres via Docker Compose e testar a API acessando o MySQL nos contêineres
O curso Docker essencial para a plataforma .NET apresenta os principais conceitos do Docker como contêineres, imagens, volumes, redes, Docker Compose e sua aplicação em aplicações da plataforma .NET através da conteinerização de aplicações ASP .NET Core usando o ambiente Linux , o .NET Core e o Visual Studio Code.
Neste curso é apresentando também o Docker Desktop for Windows mostrando sua instalação e como usar o suporte ao Docker no Visual Studio no ambiente do Windows 10 onde você vai aprender como criar contêineres usando o MongoDB , o SQL Server e o MySQL , como conteinerizar aplicações Blazor e como realizar a orquestração no ambiente do Visual Studio.
Na seção extra- Criando Microsserviços com o Visual Studio - é mostrado como criar microsserviços usando os recursos do Docker onde vamos criar contêineres com o MongoDB, PostGreSQL , Grpc, Redis e onde vamos realizar a orquestração dos contêineres usando o Docker Compose.
A seção extra- Kubernetes : Conceitos básicos - apresenta os conceitos básicos do Kubernetes como Pods, ReplicaSet, Deployment, Service, Ingress, Volumes com exercícios práticos para criação de Pods, Deploy de uma aplicação ASP .NET Core e deploy de um Microsserviço no cluster Kubernetes usando o minikube.
Dessa forma você poderá ver como aplicar o conhecimento adquirido sobre o Docker no Curso para criar Microsserviços que é um recurso muito usado atualmente e também aprender os conceitos básicos sobre o Kubernetes.
Ao final do curso você vai estar apto a utilizar o Docker em aplicações da plataforma .NET criando e orquestrando contêineres e aplicando os conceitos no seu dia a dia de desenvolvedor.