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.

$version = (Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/docker/docker/master/VERSION).Content.Trim()
Invoke-WebRequest "https://master.dockerproject.org/windows/x86_64/docker-$($version).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": "",
    "graph": "",
    "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.

{    
    "graph": "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.