Implantação de host do contêiner – Nano Server

Este documento percorrerá uma implantação muito básica do Nano Server com o recurso de contêiner do Windows. Este é um tópico avançado e pressupõe uma compreensão geral do Windows e de contêineres do Windows. Para obter uma introdução aos contêineres do Windows, consulte Início Rápido de contêineres do Windows.

Preparar o Nano Server

A seção a seguir detalhará a implantação de uma configuração muito básica do Nano Server. Para obter uma explicação de implantação mais detalhada e opções de configuração do Nano Server, consulte Getting Started with Nano Server, Introdução ao Nano Server.

Criar VM do Nano Server

Primeiro, baixe o VHD de avaliação do Nano Server neste local. Crie uma máquina virtual com base nesse VHD, inicie a máquina virtual e se conecte a ela usando a opção de se conectar do Hyper-V ou equivalente com base na plataforma de virtualização que está sendo usada.

Criar sessão remota do PowerShell

Como o Nano Server não tem recursos de logon interativo, todo o gerenciamento será concluído de um sistema remoto usando o PowerShell.

Adicione o sistema Nano Server aos hosts confiáveis do sistema remoto. Substitua o endereço IP pelo endereço IP do Nano Server.

Set-Item WSMan:\localhost\Client\TrustedHosts 192.168.1.50 -Force

Crie a sessão remota do PowerShell.

Enter-PSSession -ComputerName 192.168.1.50 -Credential ~\Administrator

Quando essas etapas forem concluídas, você estará na sessão remota do PowerShell com o sistema Nano Server. O restante deste documento, a menos que indicado em contrário, ocorrerá na sessão remota.

Instalar atualizações do Windows

Atualizações críticas são necessárias para que o recurso de Contêiner do Windows funcione. Essas atualizações podem ser instaladas executando os comandos a seguir.

$sess = New-CimInstance -Namespace root/Microsoft/Windows/WindowsUpdate -ClassName MSFT_WUOperationsSession
Invoke-CimMethod -InputObject $sess -MethodName ApplyApplicableUpdates

Reinicialize o sistema assim que as atualizações tiverem sido aplicadas.

Restart-Computer

Após fazer backup, reestabeleça a conexão remota do PowerShell.

Instalar o Docker

O Docker é necessário para trabalhar com contêineres do Windows. Para instalar o Docker, usaremos o módulo do PowerShell do provedor OneGet. O provedor habilitará o recurso de contêineres no seu computador e instalará o Docker – isso exigirá uma reinicialização.

Execute os seguintes comandos na sessão remota do PowerShell.

Primeiro, instalaremos o módulo OneGet PowerShell.

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

Em seguida, usaremos o OneGet para instalar a versão mais recente do Docker.

Install-Package -Name docker -ProviderName DockerMsftProvider

Quando a instalação for concluída, reinicie o computador.

Restart-Computer -Force

Instalar imagens de contêiner base

As imagens de sistema operacional base são usadas como a base para qualquer contêiner do Hyper-V ou Windows Server. As imagens base do sistema operacional estão disponíveis com o Windows Server Core e o Nano Server como o sistema operacional subjacente, e podem ser instaladas usando o docker pull. Para obter informações detalhadas sobre imagens de contêineres do Docker, consulte Compilar suas próprias imagens em docker.com.

Para baixar e instalar a imagem base do Windows Nano Server, execute os seguintes comandos.

docker pull microsoft/nanoserver

Se você estiver planejando usar o contêiner do Hyper-V e ter o hipervisor Hyper-V instalado no host do Nano Server, também será possível extrair a imagem do Server Core. Se você estiver executando o Azure Gallery Server 2016 Nano, saiba que o Hyper-V não está instalado.

docker pull microsoft/windowsservercore

Leia o EULA de Imagem de SO de Contêineres do Windows que pode ser encontrado aqui – EULA.

Gerenciar Docker no Nano Server

Para obter a melhor experiência, e a melhor prática, gerencie o Docker no Nano Server em um computador remoto. Isso porque, atualmente, a Comunicação Remota do PowerShell não pode redirecionar a saída do terminal TTY do shell de um contêiner interativo para o prompt inicial do cliente. Contêineres desanexados podem ser iniciados e serão executados em segundo plano usando docker run -dt, mas os contêineres interativos usando docker run -it não funcionarão conforme esperado. O ISE do PowerShell também tem problemas com a saída interativa por motivos semelhantes.

Para gerenciar um servidor remoto do Docker, os itens a seguir devem ser concluídos.

Preparar o host do contêiner

Crie uma regra de firewall no host do contêiner para a conexão do Docker. Essa será a porta 2375 para uma porta ou a conexão não segura ou a porta 2376 para uma conexão segura.

netsh advfirewall firewall add rule name="Docker daemon " dir=in action=allow protocol=TCP localport=2375

Configure o mecanismo do Docker para aceitar a conexão de entrada por TCP.

Primeiro, crie um arquivo daemon.json em c:\ProgramData\docker\config\daemon.json no host do Nano Server.

new-item -Type File c:\ProgramData\docker\config\daemon.json

Em seguida, execute o seguinte comando para adicionar configuração de conexão ao arquivo daemon.json. Ele configura o mecanismo do Docker para aceitar conexões de entrada pela porta TCP 2375. Essa é uma conexão não segura e não é recomendável, mas pode ser usada para teste isolado. Para obter mais informações sobre como proteger essa conexão, consulte Proteger o Daemon do Docker em Docker.com.

Add-Content 'c:\programdata\docker\config\daemon.json' '{ "hosts": ["tcp://0.0.0.0:2375", "npipe://"] }'

Reinicie o serviço do Docker.

Restart-Service docker

Preparar cliente remoto

No sistema remoto em que você trabalhará, baixe o cliente do Docker.

Invoke-WebRequest "https://download.docker.com/components/engine/windows-server/cs-1.12/docker.zip" -OutFile "$env:TEMP\docker.zip" -UseBasicParsing

Extraia o pacote compactado.

Expand-Archive -Path "$env:TEMP\docker.zip" -DestinationPath $env:ProgramFiles

Execute os dois comandos a seguir para adicionar o diretório do Docker ao caminho do sistema.

# For quick use, does not require shell to be restarted.
$env:path += ";c:\program files\docker"

# For persistent use, will apply even after a reboot. 
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

Depois de concluído, o host remoto do Docker poderá ser acessado com o parâmetro docker -H.

docker -H tcp://<IPADDRESS>:2375 run -it microsoft/nanoserver cmd

Uma variável de ambiente DOCKER_HOST pode ser criada e removerá o requisito de parâmetro -H. O comando do PowerShell a seguir pode ser usado para isso.

$env:DOCKER_HOST = "tcp://<ipaddress of server>:2375"

Com essa variável configurada, o comando agora ficaria assim.

docker run -it microsoft/nanoserver cmd

Host do Contêiner do Hyper-V

Para implantar os contêineres de Hyper-V, a função Hyper-V será necessária no host do contêiner. Para obter mais informações sobre os contêineres do Hyper-V, veja Contêineres do Hyper-V.

Se o host do contêiner do Windows em si for uma máquina virtual do Hyper-V, a virtualização aninhada precisará ser habilitada. Para obter mais informações sobre a virtualização aninhada, veja Virtualização aninhada.

Instale a função do Hyper-V no host do contêiner do Nano Server.

Install-NanoServerPackage Microsoft-NanoServer-Compute-Package

O host do Nano Server precisará ser reinicializado depois que a função do Hyper-V for instalada.

Restart-Computer