Como você executa um contêiner do Linux Docker no Windows Server 2016?

Eu recebo:

PS C:\tmp> docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntuno matching manifest for windows/amd64 in the manifest list entries

Agora, antes de dizer 'duplicar!', 'certifique - se de que está no modo experimental', como todas as outras respostas a esta pergunta por aí, eu ter.

Eu segui as instruções sobre Imagens lcow baseadas em LinuxKit, e até mesmo ler e seguir os passos para criar manualmente um hyper-V imagens a partir de Execute contêineres Linux no Windows.

Eu baixei a compilação noturna do Docker.

Estou executando no modo experimental:

PS C:\tmp> docker versionClient: Version:       master-dockerproject-2018-02-01 API version:   1.36 Go version:    go1.9.3 Git commit:    26a2a459 Built: Thu Feb  1 23:50:28 2018 OS/Arch:       windows/amd64 Experimental:  false Orchestrator:  swarmServer: Engine:  Version:      master-dockerproject-2018-02-01  API version:  1.36 (minimum version 1.24)  Go version:   go1.9.3  Git commit:   53a58da  Built:        Thu Feb  1 23:57:33 2018  OS/Arch:      windows/amd64  Experimental: true

Eu tentei com o --platform argumento:

PS C:\tmp> docker run --platform linux ubuntuUnable to find image 'ubuntu:latest' locallyC:\Program Files\Docker\docker.exe: Error response from daemon: invalid platform: invalid platform os "linux".See 'C:\Program Files\Docker\docker.exe run --help'.

Parece que tenho algumas diferenças em relação ao docker info da minha máquina de desktop Windows 10, onde tudo está funcionando:

Containers: 0 Running: 0 Paused: 0 Stopped: 0Images: 0Server Version: master-dockerproject-2018-02-01Storage Driver: windowsfilter Windows:Logging Driver: json-filePlugins: Volume: local Network: ics l2bridge l2tunnel nat null overlay transparent Log: awslogs etwlogs fluentd gelf json-file logentries splunk syslogSwarm: inactiveDefault Isolation: process# Windows 10 value:# Kernel Version: 4.9.60-linuxkit-aufsKernel Version: 10.0 14393 (14393.2007.amd64fre.rs1_release.171231-1800)# Windows 10 values:# Operating System: Docker for Windows# OSType: linuxOperating System: Windows Server 2016 StandardOSType: windowsArchitecture: x86_64CPUs: 2Total Memory: 3.997GiBName: TestsID: ...Docker Root Dir: C:\lcowDebug Mode (client): falseDebug Mode (server): true File Descriptors: -1 Goroutines: 16 System Time: 2018-02-02T14:46:53.5608784+08:00 EventsListeners: 0Registry: https://index.docker.io/v1/Labels:Experimental: trueInsecure Registries: 127.0.0.0/8Live Restore Enabled: false

Portanto, a versão no servidor Windows não está configurada para contêineres Linux.

Como faço para alterar essa configuração para o correto?

No Docker para windows, você pode clicar com o botão direito do mouse no ícone na barra de tarefas e escolher Mudar para contêineres Linux.

Como você pode fazer o que quer que seja, no Windows Server?

Parece que você não está executando no Windows Server, Versão 1709. Sua versão do kernel do Windows é

Kernel Version: 10.0 14393 (14393.2007.amd64fre.rs1_release.171231-1800)

enquanto a versão do kernel do 1709 é

Kernel Version: 10.0 16299 (16299.15.amd64fre.rs3_release.170928-1534)

E 1709 é oferecido somente como a instalação do núcleo do servidor. Ele não tem um ambiente de desktop. Portanto, você não poderá instalar o Docker para Windows nele.

o recurso lcow está disponível apenas em 1709 de acordo com https://blog.docker.com/2017/09/preview-linux-containers-on-windows/. Então você terá que tentar esse recurso em 1709.

Quando funciona em 1709, as informações do docker mostram o seguinte:

C:\Users\temp>docker infoContainers: 0 Running: 0 Paused: 0 Stopped: 0Images: 3Server Version: master-dockerproject-2018-02-10Storage Driver: windowsfilter (windows) lcow (linux) Windows: LCOW:Logging Driver: json-filePlugins: Volume: local Network: ics l2bridge l2tunnel nat null overlay transparent Log: awslogs etwlogs fluentd gelf json-file logentries splunk syslogSwarm: inactiveDefault Isolation: processKernel Version: 10.0 16299 (16299.15.amd64fre.rs3_release.170928-1534)Operating System: Windows Server DatacenterOSType: windowsArchitecture: x86_64CPUs: 4Total Memory: 16GiBName: winsvr1709ID: W4MK:WLAQ:3NCM:4TUT:CNKP:NPWC:B6TJ:VSC5:LKGU:LT4F:ZEAH:22X3Docker Root Dir: C:\ProgramData\dockerDebug Mode (client): falseDebug Mode (server): falseRegistry: https://index.docker.io/v1/Labels:Experimental: trueInsecure Registries: 127.0.0.0/8Live Restore Enabled: false

O post sobre como executar contêineres Linux no Windows Server: https://chunliu.me/2018/02/12/running-linux-containers-on-windows-server-2016/

Você pode tentar alternar o ambiente da linha de comando:

& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon

@ Oneiroi o problema ao qual você vinculou é para o windows 10. Executar o docker para windows no windows 10 não é um problema e funciona bem; nenhuma das resoluções nesse tíquete é relevante para minha pergunta. (Você notará na postagem do blog vinculada, eles dizem: “atualização: o suporte LCOW está disponível no Windows 10 Fall Creators Update e no Windows Server 1709. No Windows Server 1709, instale o EE preview.”<–Isso é exatamente o que eu estou perguntando como fazer.

Redirecting… contém informações sobre como instalar a visualização Docker ee, observe as advertências, no entanto, como existem vários recursos observados como ausentes / não suportados, deixe-me saber se isso ajuda.

@ Oneiroi isso não ajuda . Como apontei na minha pergunta, fiz * todas essas coisas* e não funciona. Não há vários recursos observados como ausentes / não suportados; não funciona. Você realmente tentou? Se você tem, e de alguma forma funciona para você por favor diga-me exatamente o que você fez para fazê-lo funcionar.

Isso parece ser um problema contínuo com várias opções para corrigir, verifique isso "docker pull" fails in windows 10 · Issue #1100 · docker/for-win · GitHub para mais detalhes.

@ Oneiroi 1709 não é o Windows Server 2016, que é a versão 1609.