Escolar Documentos
Profissional Documentos
Cultura Documentos
Fabio Hara
Product Marketing Manager | App Innovation | Cloud Infrastructure | Communities
@fabiohara
github.com/fabioharams
fb.com/fabioharatecnologia
Agenda
• Conceitos básicos de container
• Integrando com Docker.
• Desenvolvimento com Containers.
• Runtime do Microsoft Container
• Laboratórios
Intelligent Cloud – Intelligent Edge
}
Aplicações tradicionalmente
}
construídas e implantadas em
servidores físicos (relação 1:1) Pacotes e apps em
Novas aplicações necessitam de execução com
sistemas físicos para isolamento de Containers
Físico recursos
Físico / Virtual
}
Altas taxas de consolidação e melhor
utilização Principais benefícios
Implantação rápida de aplicativos em Raída aceleração de implantação de Apps
relação ao método tradicional
(servidores físicos) Esforço reduzido para implantar Apps
Aplicativos implantados em VMs Amplo Desenvolvimento e testes
com alta taxa de sucesso de Baixo custo associado com implantação de apps
Virtual compatibilidade
Alta taxa de consolidação
Apps beneficiadas com Recursos de
VM (ex: Live migration, HA)
Por que Containers?
Aplicações com alta inovação para um mundo móvel baseado em Cloud
}
Dependencias: Cada aplicação tem suas próprias
dependências que incluem tanto software (serviços,
bibliotecas) e hardware (CPU, memória, armazenamento).
Virtualização: Mecanismo de container é um mecanismo
muito leve de virtualização que isola estas dependências por App A App B
aplicação, “empacotando” em containers virtuais. Binários/Bibliotecas Binários/Bibliotecas
}
Machine
Processos do
sistema
Session
Manager
Gerenciamento
Local Security de contêineres
Authority
Docker
Etc... Engine
Kernel do Windows
Contêineres do Windows
Modo de usuário do host
Processos do
sistema
Session
Manager
Gerenciamento
Local Security de contêineres Contêiner do
Authority
Windows Server
Docker
Etc... Engine
Kernel do Windows
Contêineres do Windows
Modo de usuário do host
Processos do
sistema
Session
Manager
Gerenciamento
Local Security de contêineres Contêiner do
Authority
Windows Server
Docker
Etc... Engine Processos
do sistema
Kernel do Windows
Contêineres do Windows
Modo de usuário do host
Processos do
sistema
Session
Manager
Gerenciamento
Local Security de contêineres Contêiner do
Authority
Windows Server
Docker
Etc... Engine Processos Processo(s)
da(s)
do sistema aplicação(ões)
Kernel do Windows
Contêineres do Windows
Modo de usuário do host
Processos do
sistema
Session
Manager
Gerenciamento
Local Security de contêineres Contêiner do
Authority
Windows Server
Docker
Etc... Engine Processos Processo(s)
da(s)
do sistema aplicação(ões)
Kernel do Windows
Contêineres do Windows
Modo de usuário do host
Processos do
sistema
Session
Manager
Gerenciamento
Local Security de contêineres Contêiner do Contêiner do
Authority
Windows Server Windows Server
Docker
Etc... Engine Processos Processo(s)
da(s)
Processos Processo(s)
da(s)
do sistema aplicação(ões) do sistema aplicação(ões)
Kernel do Windows
Contêineres do Windows
Modo de usuário do host
Processos do
sistema
Session
Manager
Gerenciamento
Local Security de contêineres Contêiner do Contêiner do
Authority
Windows Server Windows Server
Docker
Etc... Engine Processos Processo(s)
da(s)
Processos Processo(s)
da(s)
do sistema aplicação(ões) do sistema aplicação(ões)
Hipervisor do Hyper-V
Contêineres do Windows
Modo de usuário do host
Processos do
sistema
Máquina virtual
Session Especificamente otimizado
Manager para executar um contêiner
Gerenciamento
Local Security de contêineres Contêiner do Contêiner do
Authority
Windows Server Windows Server
Docker
Etc... Engine Processos Processo(s)
da(s)
Processos Processo(s)
da(s)
do sistema aplicação(ões) do sistema aplicação(ões)
Hipervisor do Hyper-V
Contêineres do Windows
Modo de usuário do host
Isolamento do Hyper-V
Processos do
sistema
Máquina virtual
Session Especificamente otimizado
Manager para executar um contêiner
Gerenciamento
Local Security de contêineres Contêiner do Contêiner do
Authority
Windows Server Windows Server
Docker
Etc... Engine Processos Processo(s)
da(s)
Processos Processo(s)
da(s)
do sistema aplicação(ões) do sistema aplicação(ões)
Hipervisor do Hyper-V
Novo na
Contêineres do Windows versão 1709
Modo de usuário do
Isolamento do Hyper-V Isolamento do Hyper-V
host
Container
Runtime Máquina virtual Máquina virtual
Especificamente otimizado Especificamente otimizado
para executar um contêiner para executar um contêiner
Docker
Engine Contêiner do Contêiner do Contêiner Linux
Windows Server Windows Server
Container Processos Processo(s)
Processos Processo(s) Processos Processo(s)
da(s) da(s) da(s)
do sistema aplicação(ões) do sistema aplicação(ões) do sistema aplicação(ões)
Hipervisor do Hyper-V
Ecossistema de Container
Aplicações
Linux Frameworks
de aplicação
Que problemas os Conteiners resolvem?
Funciona na minha
máquina
Conjunto de problemas de IT (sempre)
Patches quebram as instalações
Pastas de implantação
Causam Shadow IT, tensão entre
Dev/Ops
Etc
Integrando com Docker.
Integração com Docker
União de investimentos estratégicos para direcionar o futuro dos
containers
Datacenter
Docker: Mecanismo open source de cliente
que automatize a implantação de
qualquer aplicação como portátil, Dockerized app
como um container auto-suficiente
que pode ser executado em qualquer
Execute em
lugar. qualquer lugar
Parceria: Permitir o cliente Docker Windows Server Linux
gerenciar multiplas aplicações de Container Container
multi-container para containers Microsoft Provedor
Windows e Linux, independente do Azure de serviço
Docker
Host de hospedagem ou provedor de
nuvem
Investimentos
Estratégicos
} Investimentos no Windows Server 2016
Desenvolvimento Open source do
Azure suportado para APIs abertas de
orquestração do Docker
Federação das imagens do Docker Hub
Docker Engine para Windows Server para a galeria do Azure Gallery e Portal
Integração com Docker
União de investimentos estratégicos para direcionar o futuro dos
containers
Docker Hub: Coleção de aplicações abertas Docker.exe
(e com curadoria) disponíveis para Docker Client Exemplos:
docker run
download. https://hub.docker.com docker images
• Container OS image
• Containers são implantados através de imagens. A imagem de SO do container é a 1° camada para as
várias camadas de imagem que criam um container. Esta imagem provê o ambiente de sistema
operacional
• Container Image
• Uma imagem de container contém a base do SO, aplicações e todas as dependências (das aplicações)
necessárias para implantar um container
• Container Registry
• Imagens de container são armazenadas em um Container registry e podem ser baixadas por demanda
• Dockerfile
• Usados para automatizar a criação de imagens de containers
Runtime do Microsoft Container
Windows Server Container
TRUSTED
Altamente Escalável e
HOSTING Seguro Eficiente MULTI-TENANCY
Automatizável Elástico
Hyper-V Container
Hosting PUBLIC
WORKLOAD Altamente Escalável e
Compartilhado Seguro Eficiente MULTI-TENANCY
CONTROLADO Automatizável Elástico
Windows container 101
Aplicativo
sO
Hardware
Windows container 101
SO
Hardware
Windows container 101
SO
Hardware
Windows container 101
SO
Hardware
Os
Hardware
Windows container 101
Containers = Virtualização do sistema operacional
SO Aplicativos
Kernel
Hardware
SO
Hardware
Windows container 101
Containers = Virtualização do sistema operacional
SO Aplicativos
Kernel
Hardware
SO
Hardware
Windows container 101
Containers = Virtualização do sistema operacional
SO Aplicativos
Kernel
Hardware
SO
Hardware
Windows container 101
Containers = Virtualização do sistema operacional Containers do Windows Server
Velocidade máxima e densidade
Recipiente Recipiente Recipiente
Container Container Container
SO Aplicativos
Kernel
Kernel
Hardware
Containers Hyper-V
Máquinas virtuais tradicionais = virtualização de hardware Isolamento + desempenho
Containers Containers Containers
VM VM VM
Aplicativo
SO
Kernel Kernel Kernel
Hardware Hyper-V
Docker time! - High Level Architecture
}
Docker
Universal Control Plane
Container
Docker Docker Docker Docker Docker
Client PowerShell Compose Registry Swarm
Development and
Management Toolset
Docker Engine
C:\Windows\*
Sandbox vazio
C:\Windows\*
Sandbox vazio
C:\Windows\*
Sandbox C:\nodeJs C:\nodeJS
Sandbox C:\nodeJs
Framework
de Aplicação Framework
de Aplicação C:\nodeJs
Sandbox Empty
Framework de
Aplicação Framework C:\Windows\*
de Aplicação C:\nodeJs C:\nodeJS
Sandbox Empty
Framework
de Aplicação Framework C:\Windows\*
de aplicação C:\nodeJs C:\nodeJS
Sandbox C:\myApp
Framework
de Aplicação Framework C:\Windows\*
de Aplicação C:\nodeJs C:\nodeJS
C:\myApp
Sandbox C:\myApp
Framework
de Aplicação Framework
de Aplicação C:\nodeJs
Imagem C:\myApp
de Aplicação
Framework
de Aplicação Framework
de Aplicação C:\nodeJs
Repositório
Central
Application
Framework
Repositório
Local
Processo de Desenvolvimento usando Containers
Repositório
Central
Repositório
Local
Processo de Desenvolvimento usando Containers
Repositório
Central
}
}
Repositório
Desenvolvedores usam a mesma Central
linguagem de programação e
ambientes aos quais estão
habituados
Application
Framework Application
Framework
Repositório
Local
Processo de Desenvolvimento usando Containers
using System;
class Program
{
static void Main()
{
}
}
Repositório
central
Application
Framework Application
Framework
}
}
Repositório
Central
Uma
co n t n o v a
a i
a ap iner é fe magem
licaç ita c de
um d ão , o n
Application esen escrita tend
v o lv p
edor or
Framework Application
Framework
Repositório
Local
Processo de Desenvolvimento usando Containers
using System;
class Program
{
static void Main()
{
}
}
Repositório
Central
A nova imagem
d
aplicação pode o container de
se
para o repositó r “empurrada”
rio central
Application
Framework Application
Framework
Repositório
Local
Processo de Desenvolvimento usando Containers
Repositório
Central
Application
Framework
Processo de Desenvolvimento usando Containers
Utilizado parateste
unitário
Repositório
Compartilhado com Central
outros desenvolvedores
Application
Framework
Processo de Desenvolvimento usando Containers
Utilizado parateste
unitário
Repositório
Compartilhado com Central
outros desenvolvedores
3
Operações colaboram com desenvolvedores
para provêr métricas de Apps e Insights
Desenvolvedores controem e
testam apps em containers, Operações automatizam
usando ambiente de 1 Central 2 implantação e monitoram
Desenvolvimento (ex: Visual Repository
apps do repositório central
Studio)
Instância do contêiner
Serviço de App Service Fabric Serviço de contêiner Azure 3RD Party
Azure
Escolha de ferramentas de
desenvolvedor e clientes
Sem tocar em um única linha de código
ou envolvimento do desenvolvedor
Validar
No local
Converter Publicar
Fabio Hara
Product Marketing Manager | App Innovation | Cloud Infrastructure | Communities
@fabiohara
github.com/fabioharams
fb.com/fabioharatecnologia
Onde os desenvolvedores gastam tempo...
Depurando aplicativos existentes
Podemos facilitar...
Self-Healing
Dimensionamento horizontal
Rollback e Rollouts automatizados
Detecção de serviços e balanceamento de carga
Automático binpacking Automaticamente coloca
containers com base em seus
Orquestração de armazenamento requisitos de recursos e outras
restrições, sem sacrificar a
Gerenciamento de Secrets e Configuração disponibilidade. Misture cargas
de trabalho críticas e de melhor
esforço a fim de impulsionar a
utilização e economizar ainda
mais recursos.
Construindo kubernetes no Windows
#SIG-grupo de trabalho do Windows
Apprenda, Google, Microsoft, Red Hat
Kubernetes 1,5 Alpha Release-dezembro 2016
Cargas de trabalho
mistas no ACS
Como é que funciona?
Nó do Windows Nó Linux
Como é que funciona?
Nó do Windows Nó Linux
Como é que funciona?
Nó do Windows Nó Linux
Como é que funciona?
Nó do Windows Nó Linux
Diagrama de implantação do Windows
OpenShift = Kubernetes nível Enterprise
Compilar, implantar e gerenciar aplicativos com contêineres
Recipiente Recipiente Recipiente Recipiente Recipiente
Auto-serviço
Catálogo de serviços
(runtimes de linguagem, middleware, bancos de dados,...)
LOGS &
Rede Armazenamento Registro Segurança
métricas
HOST atômico
Disponível nas
Standard e Datacenter
Edições do Windows Server Edições
Application innovation
Windows Server 2016 383 MB 413 MB Windows Server 2016 1.05 GB 1.15 GB
Nano Server Nano Server
Instalando Containers
Instalar serviço de container e Docker
1. Abrir PowerShell em modo Administrativo
• Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
• Install-Package -Name docker -ProviderName DockerMsftProvider
• Restart-Computer -Force
2. Faça Windows Update após reiniciar
3. Verificar instalação
1. Get-WindowsFeature Containers
2. Get-Service Docker
Instalar imagens de base
1. Abrir PowerShell em modo administrativo
2. Comando Docker para listar repositório público com
imagens da Microsoft
1. Docker search microsoft
2. Baixando container
1. docker pull microsoft/iis:windowsservercore
Dockerfile
Sintaxe (exemplos)
1. Informar imagem de container a ser usada
1. FROM windowsservercore
3. Copiar dados
1. COPY teste1.txt c:/temp/
2. COPY diretorio1 /sqldemo/
2. Usando caractere `
1. FROM windowsservercore
2. RUN powershell.exe -Command `
3. $ErrorActionPreference = 'Stop'; `
4. wget https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe -OutFile c:\python-3.5.1.exe ; `
5. Start-Process c:\python-3.5.1.exe -ArgumentList '/quiet InstallAllUsers=1 PrependPath=1' -Wait ; `
6. Remove-Item c:\python-3.5.1.exe -Force
Sintaxe (exemplos)(cont...)
1. Comandos PowerShell no Dockerfile
1. FROM windowsservercore
2. RUN powershell -command Expand-Archive -Path c:\apache.zip
-DestinationPath c:\
2. Chamada REST
1. FROM windowsservercore
2. RUN powershell.exe -Command \
3. $ErrorActionPreference = 'Stop'; \
4. Invoke-WebRequest https://www.python.org/ftp/python/3.5.1/python-
3.5.1.exe -OutFile c:\python\python-3.5.1.exe ; \
5. Start-Process c:\python\python-3.5.1.exe -ArgumentList '/quiet
InstallAllUsers=1 PrependPath=1' -Wait ; \
Sintaxe (exemplos)(cont...) Invoke-webrequest e WebClient
por enquanto não são suportados
no Nano Server (TP5)
1. Comando PowerShell no Dockerfile
1. FROM windowsservercore
2. RUN powershell -command Expand-Archive -Path c:\apache.zip -DestinationPath c:\
Implantando Windows
Containers e Hyper-V
Containers
Preparar Host
1. Verificar se Host suporta virtualização
1. Mínimo de 4GB de RAM para laboratório
2. Windows Server 2016
3. Processador suportando Intel-VT ou AMD-V
1. Msinfo32 para verificar se processador suporta virtualização
2. Importar módulo
1. Import-module .\NanoServerImageGenerator -verbose
2. Modo normal
1. Docker run –d windowsservercore ping localhost –t
2. Copiar ID
Gerenciando dados
Criando volumes de dados
1. Executar container e criar volume
1. Docker run –it –v c:\novo-volume-dados windowsservercore cmd
2. Criar arquivo na pasta c:\novo-volume-dados
1. Echo “teste de volume de dados” > c:\novo-volume-dados\testevolume1.txt
2. Dir
3. Exit
4. Visualizar volume no Host em c:\ProgramData\docker\volumes
Montando volume de dados
1. Criar pasta no Host e copiar arquivos
1. Criar pasta c:\origem
2. Copiar arquivos pequenos para esta pasta
2. Executar container montando volume de dados
existente no Host (c:\origem) para dentro do container
(c:\destino
1. Docker run –it –v c:\origem:c:\destino windowservercore cmd
2. Command Prompt será aberto
3. Visualizar conteúdo
1. Através do Command Prompt entrar na pasta c:\destino e visualizar
conteúdo (DIR)
Montando um único arquivo
1. Criar pasta e arquivo de teste no host
1. New-item -type directory –path c:\origem2
2. Echo “teste com arquivo único1” > c:\origem2\teste1.txt
3. Echo “teste com arquivo único2” > c:\origem2\teste2.txt
4. Echo “teste com arquivo único3” > c:\origem2\teste3.txt
Gerenciando recursos
Gerenciando recursos
1. Controlando recurso de CPU (1-10000, default 5000)
para 2 processadores virtuais
1. Docker run –it --cpu-shares 2 –name dockerdemo windowsservercore
cmd
Configurando Docker
Configurando Docker no Windows
• Arquivo daemon.json
• C:\ProgramData\docker\config\daemon.json
• Caso arquivo não exista então pode ser criado
• Obs: nem todos parâmetros do daemon.json são aplicáveis ao Docker para
Windows
• Permitir conexão do Docker daemon na TCP 2375
• Opção 1 – daemon.json
• "hosts": ["tcp://0.0.0.0:2375", "npipe://"]
Removendo Imagens
Removendo imagens instaladas
• Powershell
• Uninstall-ContainerOSImage –fullname
CN=Microsoft_NanoServer_10.0.14300.1016
• Docker
• Remover imagens
• Docker rmi windowsservercoreiis
• Remover containers
• Docker rm
Links adicionais
• Msdn.microsoft.com/virtualization/windowscontainers
• Docs.docker.com
• Azure.microsoft.com/en-us/blog/containers-docker-windows-
and-trends
• blogs.technet.microsoft.com/windowsserver/2015/10/28/a-
closer-look-at-windows-server-and-hyper-v-containers-with-
mark-russinovich/
• Technet.microsoft.com/en-us/library/mt126167.aspx
• mva.microsoft.com/pt-br/training-courses/docker-conceitos-e-
prtica-12185
• mva.microsoft.com/en-US/training-courses/whats-new-in-
windows-server-2016-16457