Mecanismo do Docker no Windows

O mecanismo do Docker e o cliente não estão incluídos no Windows e precisarão ser instalados e configurados individualmente. Além disso, o mecanismo do Docker pode aceitar muitas configurações personalizadas. Alguns exemplos incluem a configuração de como o daemon aceita solicitações de entrada, as opções de rede padrão e as configurações de depuração/log. No Windows, essas configurações podem ser especificadas em um arquivo de configuração ou usando Gerenciador de Controle de Serviços do Windows. Este documento mostra detalhadamente como instalar e configurar o mecanismo do Docker e também fornece alguns exemplos de configurações usadas normalmente.

Instalar o Docker

O Docker é necessário para trabalhar com contêineres do Windows. O Docker é composto pelo mecanismo de Docker (dockerd.exe) e pelo cliente de Docker (docker.exe). A maneira mais fácil de instalar tudo está nos guias de início rápido. Eles o ajudarão a configurar e executar completamente seu primeiro contêiner.

Instalação manual

Se quiser usar uma versão em desenvolvimento do cliente e mecanismo de Docker em vez disso, será possível usar as etapas a seguir. Isso instalará o cliente e o mecanismo de Docker. Se você for um desenvolvedor testando novos recursos ou usando uma compilação do Windows Insider, talvez precise usar uma versão em desenvolvimento do Docker. Caso contrário, siga as etapas na seção Instalar o Docker acima para obter as versões lançadas mais recentes.

Se você tiver instalado o Docker para Windows, certifique-se de removê-lo antes de executar essas etapas de instalação manual.

Baixar o mecanismo de Docker

A versão mais recente sempre pode ser encontrada em https://master.dockerproject.org. Este exemplo usa as informações mais recentes do branch mestre.

Invoke-WebRequest "https://master.dockerproject.org/windows/x86_64/docker.zip" -OutFile "$env:TEMP\docker.zip" -UseBasicParsing

Expanda o arquivo zip em Arquivos de Programas.

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

Adicione o diretório do Docker ao caminho do sistema. Quando concluído, reinicie a sessão do PowerShell para que o caminho modificado seja reconhecido.

# Add path to this PowerShell session immediately
$env:path += ";$env:ProgramFiles\Docker"

# For persistent use after a reboot
$existingMachinePath = [Environment]::GetEnvironmentVariable("Path",[System.EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("Path", $existingMachinePath + ";$env:ProgramFiles\Docker", [EnvironmentVariableTarget]::Machine)

Para instalar o Docker como um serviço Windows, execute o seguinte.

dockerd --register-service

Após ser instalado, o serviço poderá ser iniciado.

Start-Service Docker

Antes de Docker poder ser usado, as imagens de contêiner precisarão ser instalados. Para obter mais informações, consulte o guia de início rápido para usar imagens.

Configurar o Docker com o Arquivo de Configuração

O método preferencial para configurar o Mecanismo do Docker no Windows é usar um arquivo de configuração. O arquivo de configuração pode ser encontrado em 'C:\ProgramData\Docker\config\daemon.json'. Se esse arquivo ainda não existir, ele poderá ser criado.

Observação: nem todas as opções de configuração disponíveis do Docker são aplicáveis ao Docker no Windows. O exemplo abaixo mostra aquelas que são. Para obter a documentação completa sobre a configuração do mecanismo do Docker, consulte o arquivo de configuração do daemon do Docker.

{
    "authorization-plugins": [],
    "dns": [],
    "dns-opts": [],
    "dns-search": [],
    "exec-opts": [],
    "storage-driver": "",
    "storage-opts": [],
    "labels": [],
    "log-driver": "", 
    "mtu": 0,
    "pidfile": "",
    "data-root": "",
    "cluster-store": "",
    "cluster-advertise": "",
    "debug": true,
    "hosts": [],
    "log-level": "",
    "tlsverify": true,
    "tlscacert": "",
    "tlscert": "",
    "tlskey": "",
    "group": "",
    "default-ulimits": {},
    "bridge": "",
    "fixed-cidr": "",
    "raw-logs": false,
    "registry-mirrors": [],
    "insecure-registries": [],
    "disable-legacy-registry": false
}

Somente as alterações desejadas na configuração precisam ser adicionadas ao arquivo de configuração. Por exemplo, este exemplo configura o mecanismo do Docker para aceitar conexões de entrada na porta 2375. Todas as outras opções de configuração usarão os valores padrão.

{
    "hosts": ["tcp://0.0.0.0:2375"]
}

Da mesma forma, este exemplo configura o daemon do Docker para manter imagens e contêineres em um caminho alternativo. Se não for especificado, o padrão será c:\programdata\docker.

{    
    "data-root": "d:\\docker"
}

Da mesma forma, este exemplo configura o daemon do Docker para aceitar somente conexões seguras pela porta 2376.

{
    "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
    "tlsverify": true,
    "tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
    "tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
    "tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem",
}

Configurar o Docker no Serviço do Docker

O mecanismo do Docker também pode ser configurado ao modificar o serviço do Docker usando o sc config. Usando esse método, os sinalizadores do mecanismo do Docker são definidos diretamente no serviço do Docker. Execute o comando a seguir em um prompt de comando (cmd.exe não PowerShell):

sc config docker binpath= "\"C:\Program Files\docker\dockerd.exe\" --run-service -H tcp://0.0.0.0:2375"

Observação: você não precisará executar esse comando se o arquivo daemon.json já contiver a entrada "hosts": ["tcp://0.0.0.0:2375"].

Configuração Comum

Os exemplos de arquivo de configuração a seguir mostram as configurações comuns do Docker. Eles podem ser combinados em um único arquivo de configuração.

Criação de Rede Padrão

Para configurar o mecanismo do Docker para que uma rede NAT padrão não seja criada, use o seguinte. Para mais informações, consulte Gerenciar Redes do Docker.

{
    "bridge" : "none"
}

Definir Grupo de Segurança de Docker

Quando estiver conectado no host do Docker e estiver executando os comandos localmente, esses comandos serão executados por um pipe nomeado. Por padrão, somente os membros do grupo Administradores podem acessar o mecanismo do Docker por meio do pipe nomeado. Para especificar um grupo de segurança que tenha esse acesso, use o sinalizador group.

{
    "group" : "docker"
}

Configuração de Proxy

Para configurar informações de proxy para docker search e docker pull, crie uma variável de ambiente do Windows com o nome HTTP_PROXY ou HTTPS_PROXY, e um valor das informações de proxy. Isso pode ser concluído com o PowerShell usando um comando semelhante a este:

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://username:password@proxy:port/", [EnvironmentVariableTarget]::Machine)

Quando a variável tiver sido definida, reinicie o serviço do Docker.

Restart-Service docker

Para obter mais informações, consulte o Arquivo de Configuração do Windows em Docker.com.

Desinstalar o Docker

Use as etapas nesta seção para desinstalar o Docker e realizar uma limpeza completa dos componentes do sistema Docker no seu sistema Windows 10 ou Windows Server 2016.

Observação: todos os comandos nas etapas a seguir devem ser executados em uma sessão do PowerShell com privilégios elevados.

ETAPA 1: preparar o sistema para a remoção do Docker

Se você ainda não tiver feito isso, é recomendável garantir que não haja contêineres em execução no sistema antes de remover o Docker. Aqui estão alguns comandos úteis para isso:

# Leave swarm mode (this will automatically stop and remove services and overlay networks)
docker swarm leave --force

# Stop all running containers
docker ps --quiet | ForEach-Object {docker stop $_}

Também é recomendável remover todos os contêineres, imagens de contêineres, redes e volumes do sistema antes de remover o Docker:

docker system prune --volumes --all

ETAPA 2: desinstalar o Docker

Etapas para desinstalar o Docker no Windows 10:10:

  • Vá para "Configurações" > "Aplicativos" no seu computador Windows 10
  • Em "Aplicativos e Recursos", encontre "Docker para Windows"
  • Clique em "Docker para Windows" > "Desinstalar"

Etapas para desinstalar o Docker no Windows Server 2016:16:

Em uma sessão do PowerShell com privilégios elevados, use os cmdlets Uninstall-Package e Uninstall-Module para remover o módulo Docker e o respectivo provedor de gerenciamento de pacotes do seu sistema.

Dica: você pode encontrar o Provedor do Pacote que usou para instalar o Docker com PS C:\> Get-PackageProvider -Name *Docker*

Por exemplo:

Uninstall-Package -Name docker -ProviderName DockerMsftProvider
Uninstall-Module -Name DockerMsftProvider

ETAPA 3: limpar dados do Docker e componentes do sistema

Remova as redes padrão do Docker, para que suas configurações não permaneçam no sistema após a desinstalação do Docker:

Get-HNSNetwork | Remove-HNSNetwork

Remova os dados de programa do Docker do sistema:

Remove-Item "C:\ProgramData\Docker" -Recurse

Talvez você queira remover os recursos opcionais do Windows associados ao Docker ou a contêineres no Windows.

No mínimo, isso inclui o recurso "Contêineres", que é habilitado automaticamente em qualquer Windows 10 ou Windows Server 2016 quando o Docker é instalado. Ele também pode incluir o recurso "Hyper-V", que é habilitado automaticamente no Windows 10 quando o Docker é instalado, mas deve ser habilitado explicitamente no Windows Server 2016.

OBSERVAÇÃO IMPORTANTE SOBRE A DESABILITAÇÃO DO HYPER-V: o Hyper-V é um recurso de virtualização geral que permite muito mais do que apenas contêineres. Antes de desabilitar o recurso Hyper-V, certifique-se de que não haja nenhum outro componente virtualizado no seu sistema que o exija.

Etapas para remover recursos do Windows no Windows 10:10:

  • Vá para "Painel de Controle" > "Programas" >"Programas e Recursos" > "Ativar ou desativar recursos do Windows" no seu computador Windows 10
  • Localize o(s) nome(s) do(s) recursos(s) que deseja desabilitar; neste caso, "Contêineres" e (opcionalmente) "Hyper-V"
  • Desmarque a caixa ao lado do nome do recurso que deseja desabilitar
  • Clique em "OK"

Etapas para remover recursos do Windows no Windows Server 2016:16:

Em uma sessão do PowerShell com privilégios elevados, use os seguintes comandos para desabilitar os recursos "Contêineres" e (opcionalmente) "Hyper-V" do sistema:

Remove-WindowsFeature Containers
Remove-WindowsFeature Hyper-V 

ETAPA 4: reinicializar o sistema

Para concluir estas etapas de desinstalação/limpeza, em uma sessão do PowerShell com privilégios elevados, execute:

Restart-Computer -Force