Machine: Conecte-se ao mecanismo Windows Docker

Criado em 22 jan. 2016  ·  60Comentários  ·  Fonte: docker/machine

Alguém começou a adicionar ou pensar sobre um driver de máquina docker e provisionador para os mecanismos do Windows Docker?
Então, qualquer um pode usar docker-machine para proteger e se conectar a um Windows Server 2016 TP4 tão fácil quanto somos usados ​​para um Linux Docker Engine?

Algo como:

docker-machine create -d generic --generic-winrm-user "administrator" ... dev
docker-machine create -d azure --azure-username "administrator" --azure-winrm-port 5985 ... dev

Usar WinRM (HTTP / HTTPS) em vez de SSH para acessar o Windows Server remoto e colocar os certificados TLS nele e reconfigurar o serviço Docker do Windows e outras coisas.
Eu sei que o empacotador tem comunicadores para SSH e WinRM embutidos em Go para provisionamento.
Apenas ligando os pontos ...

ping @ahmetalpbalkan : smile:

arewindows kinenhancement

Comentários muito úteis

Segui as instruções de @ jen20 para construir um Windows AMI com SSH. Ele funciona com a Docker Machine até o ponto de provisionamento, onde falha porque não há um arquivo /etc/os-release . Agora que o SSH no Windows está disponível (com algum esforço), podemos obter um provisionador Docker Machine baseado em SSH para Windows?

Todos 60 comentários

Devido à maneira como o modelo de provisionador funciona atualmente, pode não ser _muito_ louco implementar tal funcionalidade, embora exija repensar ou revisar algumas suposições bastante fundamentais (por exemplo, a presença de SSH).

Tenho a sensação de que a maneira como ele precisará ser implementado é tendo alguns sinalizadores que indicam especificamente que é uma máquina Windows. por exemplo, --generic-winrm-userpass .

Não sei muito sobre os contêineres do Windows Server, no entanto, como Nathan disse, a maior parte do trabalho seria obter o protocolo SSH no Windows esperando que a Microsoft o fizesse (está acontecendo) ou fornecendo um polyfill usando WinRM talvez (eu não saber como funciona).

Lembro que alguma discussão sobre isso estava acontecendo internamente também. cc: @jstarks porque ele está na equipe de contêineres do Windows.

Se você acha que pode fazer um protótipo de alguma coisa, eu diria que vá em frente.

Olá @StefanScherer , sou um PM na equipe do Hyper-V e estou procurando como podemos tornar isso possível. Uma das coisas em que estamos pensando é que talvez pudéssemos usar isso como o sistema operacional que a máquina Docker poderia puxar. Se usarmos o Nano, ele ficará como um pequeno download. O repositório para o Open SSH no projeto Windows está aqui .

Quaisquer ideias são apreciadas e se você for fazer um protótipo de algo, por favor me avise. Continuarei postando aqui se descobrir mais sobre como fazer isso funcionar.

cc: @dgageot

@enderb-ms Oh, uma imagem Nano, isso também seria ótimo. E o OpenSSH também é uma opção. Nesse ínterim, outros projetos como Packer e Vagrant melhoraram o suporte ao Windows para usar WinRM e se livrar do SSH para ter uma comunicação mais nativa.

O primeiro passo é permitir que a docker-machine se conecte a um servidor TP4, por exemplo. com o driver genérico.

Ainda não experimentei o driver azure, penso em selecionar um modelo de motor TP4 VM + docker no Azure e a docker-machine saberá provisionar uma VM Windows em vez de uma VM Linux. Ele só precisa realizar algumas etapas mínimas para conectar a máquina local onde a docker-machine está sendo executada com aquele Docker Engine remoto.

Estas são as etapas de um driver genérico em execução em uma VM Linux que já possui o Docker instalado. Adicionei algumas ideias para Windows:

  1. docker-machine se conecta ao endereço IP remoto
  2. verifique a versão do sistema operacional se ele pode ser provisionado (cat / etc / os-release -> obtenha algumas informações do Windows)
  3. atualizar o nome do host?
  4. atualizar / etc / hosts
  5. instalar curl (não é necessário instalá-lo em hosts Windows)
  6. verifique se o docker está instalado. Se não, instale-o. (provavelmente executa o Install-ContainerHost.ps1 inteiro?)
  7. verificar a versão do docker
  8. crie o diretório de configuração do docker (/ etc / docker ->% ProgramData% / docker)
  9. parar o serviço docker
  10. insira ca.pem (Windows:% ProgramData% / docker / certs.d)
  11. insira server.pem
  12. insira a chave do servidor.pem
  13. gravar o arquivo de configuração do docker (/ etc / default / docker, provavelmente um aprimoramento de% ProgramData% / docker / runDockerDaemon.cmd)
  14. iniciar o serviço docker
  15. netstat -an

Fase 1:

Para o cenário TP4 Azure / local com mecanismo docker pré-instalado:

Etapa 1.) ele tem que usar WinRM (por exemplo, dê uma olhada no comunicador winrm do empacotador) em vez de SSH.

Etapa 2.) pode verificar se tudo está funcionando e se a VM é um TP4. Caso contrário, aborte se não for possível instalar tudo, por exemplo, sem reinicializar.

Em seguida, ele deve executar as etapas 9.) ... 14.) para interromper a janela de encaixe, insira os certificados TLS e reinicie a janela de encaixe. Depois que a docker-machine tiver criado a conexão com uma VM do Azure existente / local ou VM do Windows local e protegida a porta da docker.

Fase 2:

Posteriormente, na etapa 2.) pode ser aprimorado para permitir que servidores 2016 "vazios" instalem o Docker com a etapa 6.)

Fase 3:

E então ter um "boot2docker.iso" com uma imagem Nano para baixar localmente.

Apenas algumas primeiras idéias ;-)

@dgageot, você está planejando acionar isso? Do contrário, acho que devemos apontar o pessoal da Microsoft na direção certa para que eles possam tentar fazer progressos

@friism Já existe um trabalho em andamento com @ enderb-ms

@dgageot ótimo! Existe um lugar onde eu possa obter mais detalhes?

@dgageot Eu tenho uma alteração que pode

Breve descrição do que fiz

  1. Adicione suporte para girar a imagem do Windows.
  2. Use a imagem TP4 do servidor Windows 2016 no Azure
  3. Acelere. Estou usando a biblioteca https://github.com/Azure/azure-sdk-for-go em vez do código vendido em https://github.com/docker/machine/tree/master/vendor/github.com/ MSOpenTech / azure-sdk-for-go , que parece uma versão mais antiga.
  4. Use WinRM para se conectar à instância, instale docker-engine
  5. Execute todas as outras etapas. Eu percebi que a rede fica confusa às vezes e o Vswitch precisa ser configurado.

cc @ahmetalpbalkan

@ppadala incrível

hawt

Obrigado @stefanfoulis @friism. O trabalho está em https://github.com/containerx/machine , mas também inclui algumas outras mudanças não relacionadas a este PR.

Estou criando um novo branch, código de limpeza e enviarei uma solicitação pull em breve.

Fiz o pedido de pull, quaisquer comentários e avaliações são bem-vindos.

Ainda há alguns itens embutidos em código que precisam ser corrigidos, que irei consertar nos próximos dias.

@ppadala muito bom. Acho que os mantenedores do @enderb-ms e docker-machine estão tentando descobrir se eles devem usar WinRM ou bootstrap OpenSSH no Windows. Vou deixar essas pessoas decidirem qual trabalho deve ser feito.

No que diz respeito ao driver azul, infelizmente não podemos fazer alterações no driver azure . Acabei de reescrever o driver azure com a pilha do Azure Resource Manager (é uma grande mudança significativa). Os detalhes estão em: https://github.com/docker/machine/issues/2742#issuecomment -189993875 no momento, estamos tratando de problemas de instabilidade no SDK do Azure. Assim que isso for feito, enviarei um PR para lançar o novo azure motorista.

@ppadala também é importante que isso provavelmente não seja apenas uma mudança de driver azure , pois em breve todos os provedores de nuvem terão imagens WS2016 e (se necessário) docker-machine provavelmente precisará adicionar esses sinalizadores específicos do Windows.

@ppadala muito bom. Acho que os mantenedores do @enderb-ms e docker-machine estão tentando descobrir se eles devem usar WinRM ou bootstrap OpenSSH no Windows. Vou deixar essas pessoas decidirem qual trabalho deve ser feito.

Na verdade, também considerei a opção SSH. Só não gostei do servidor Windows OpenSSH que experimentei, tive problemas para me conectar ao servidor do OS X. Dito isso, não experimentei todos os servidores SSH possíveis, vocês conhecem melhor. Feliz em entrar na discussão, deixe-me saber onde a discussão está acontecendo.

No que diz respeito ao driver azul, infelizmente não podemos fazer alterações no driver azul. Acabei de reescrever o driver azure com a pilha do Azure Resource Manager (é uma grande mudança significativa). Os detalhes estão em: # 2742 (comentário), no momento, estamos tratando de problemas de instabilidade no SDK do Azure. Assim que eles forem concluídos, enviarei um PR para lançar o novo driver azure.

Não se preocupe, a mudança que fiz na verdade não é apenas para o driver azure, mas também para o resto da docker-machine para adicionar uma opção para o sistema operacional. Vou testar seu código postado em # 2742. O código já tem suporte para girar imagens do Windows no Azure?

@ppadala também é importante que isso provavelmente não seja apenas uma mudança de driver azure, pois em breve todos os provedores de nuvem terão imagens WS2016 e (se necessário) docker-machine provavelmente precisará adicionar esses sinalizadores específicos do Windows.

Como mencionei acima, minha mudança tem tanto o driver azure quanto o resto das mudanças da docker-machine. Como devemos proceder a partir daqui? Posso esperar que as alterações do gerenciador de recursos sejam confirmadas e, então, podemos descobrir como adicionar sinalizadores específicos do Windows à docker-machine.

@ahmetalpbalkan Eu verifiquei o código que você postou em # 2742. Pelo que entendi, ele está movendo o driver para usar APIs ARM e não tem suporte para imagens do Windows. Aqui está o que eu proponho

  1. Revise e confirme seu código
  2. Adicionar suporte para rotação de imagem do Windows
  3. Adicione o provisionador do Windows usando WinRM (ou SSH se essa for a escolha com a qual concordamos), sinalizadores e outras alterações no núcleo da máquina docker

Eu fiz 2 e 3 com o driver atual e posso fazer alterações semelhantes com base no seu driver baseado em ARM. Deixe-me saber a sua opinião.

@ppadala soa bem. se você tentar rebasear seu código no topo do meu branch, você pode ser desbloqueado e começar a fazer algum trabalho. Em termos de funcionalidade, o novo driver está pronto, mas ainda estamos resolvendo alguns problemas no azure-sdk-for-go e isso ainda pode levar algum tempo (como algumas semanas) e enviarei o resultado final como um puxão solicitação.

@ppadala isso é incrível! Obrigado por fazer isso. Infelizmente, não tenho conseguido nenhum tempo de desenvolvedor, então não começamos a trabalhar em nossas ideias. Mas isso pode me ajudar a trazer as pessoas a bordo.
Uma das razões pelas quais queremos usar o SSH para permitir que os desenvolvedores em outras plataformas (Linux e OS X) possam implantar hosts de contêiner do Windows em VMs em suas máquinas locais ou na nuvem. Começamos a falar sobre a possibilidade de incluir OpenSSH em algumas imagens do Azure, dessa forma, nenhuma etapa extra seria necessária para adicionar esse recurso. Você poderia me contar mais sobre os problemas que encontrou com o OpenSSH?
Marcando @dgageot, que também tinha algumas idéias sobre WinRM.
Novamente, isso é ótimo, obrigado por fazer isso @ppadala

@ppadala isso é incrível! Obrigado por fazer isso. Infelizmente, não tenho conseguido nenhum tempo de desenvolvedor, então não começamos a trabalhar em nossas ideias. Mas isso pode me ajudar a trazer as pessoas a bordo.
Uma das razões pelas quais queremos usar o SSH para permitir que os desenvolvedores em outras plataformas (Linux e OS X) possam implantar hosts de contêiner do Windows em VMs em suas máquinas locais ou na nuvem. Começamos a falar sobre a possibilidade de incluir OpenSSH em algumas imagens do Azure, dessa forma, nenhuma etapa extra seria necessária para adicionar esse recurso. Você poderia me contar mais sobre os problemas que encontrou com o OpenSSH?

Eu estava configurando https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH como o servidor SSH. Quando eu executo o ssh <server> <cmd> no Mac, parece não funcionar, embora o ssh interativo simples para o servidor funcione.

Se você incluir o servidor SSH nas imagens do Azure, isso será definitivamente mais limpo. A interface do driver da máquina docker já parece assumir que o acesso SSH está disponível.

@ppadala na verdade, acabei de descobrir que existem algumas bibliotecas que permitem a comunicação winrm no Linux e Mac OS X, o que tornaria tudo muito mais simples por enquanto. Você está usando esta biblioteca para a comunicação winrm, certo? Você sabe se isso funciona no Linux e no Mac OS X?

@ppadala na verdade, acabei de descobrir que existem algumas bibliotecas que permitem a comunicação winrm no Linux e Mac OS X, o que tornaria tudo muito mais simples por enquanto. Você está usando esta biblioteca para a comunicação winrm, certo? Você sabe se isso funciona no Linux e no Mac OS X?

Sim, a biblioteca do packer é o que estou usando. Ele funciona tanto no Mac OS X quanto no Linux.

@ppadala, a discussão ssh vs

  • SSH é bom porque significa que a máquina sempre usa o mesmo protocolo para se comunicar com hosts (sejam eles Linux ou Windows)
  • winrm é bom porque não envolve o bloqueio de software novo / estrangeiro no Windows

@ppadala parece que você pode ativar automaticamente o winrm ao provisionar no azure com EnableWinRMHttp . Detalhes aqui: https://msdn.microsoft.com/en-us/library/azure/dn495299.aspx

@ enderb-ms @ taylorb-microsoft qual imagem inicial do WS2016 deve ser usada para isso?

@ppadala , parece que você pode habilitar automaticamente o winrm ao provisionar no azure com EnableWinRMHttp. Detalhes aqui: https://msdn.microsoft.com/en-us/library/azure/dn495299.aspx

Já estou fazendo isso, o que abre as portas no Azure. A imagem também precisa ter o WinRM habilitado e a regra de firewall do Windows configurada corretamente. Talvez o pessoal da Microsoft possa intervir aqui, se estou entendendo isso incorretamente.

sobre a questão de WinRM vs OpenSSH.

Acho que ambos deveriam ser opções ... o trabalho do OpenSSH para Windows está progredindo (https://github.com/PowerShell/Win32-OpenSSH), mas ainda não está totalmente completo (por exemplo, ainda não funciona no Nano Server ) Portanto, acho que o WinRM é uma boa opção agora e então podemos fazer camadas no OpenSSH como / quando estiver disponível para paridade com as experiências do Linux.

Olá @ppadala , alguns dos meus colegas de trabalho têm algumas perguntas sobre a atualização que você está planejando fazer no driver do Azure:

  1. Você tem planos de testá-lo com o Nano Server? Como o motorista escolhe qual sistema operacional escolher?
  2. Usando as mudanças que você fará, esse cenário funcionará? "O usuário usa a função docker-machine create com o driver do Azure para provisionar uma VM de host de contêiner do Windows e, em seguida, usa docker-machine env para começar a gerenciar seus contêineres da VM de seu cliente"
  3. Qual será a aparência do comando "docker-machine create" no Windows?

Além disso, não quero ser agressivo, mas estou curioso, alguma ideia de quando seu PR vai começar? Mais uma vez, muito obrigado por isso!

Com relação à pergunta do @friism , se isso pode funcionar com as imagens Full Server e Nano Server do WS2016, seria perfeito.

  1. Você tem planos de testá-lo com o Nano Server? Como o motorista escolhe qual sistema operacional escolher?

Sim. O driver simplesmente acelera qualquer imagem do servidor Windows fornecida como uma opção semelhante a como a imagem do Linux é escolhida com a opção --azure-image. Esse dito nano servidor precisa ser testado.

  1. Usando as mudanças que você fará, esse cenário funcionará? "O usuário usa a função docker-machine create com o driver do Azure para provisionar uma VM de host de contêiner do Windows e, em seguida, usa docker-machine env para começar a gerenciar seus contêineres da VM de seu cliente"

Sim. Este é o principal caso de uso. A funcionalidade do cliente permanece a mesma, porque tudo o que estamos fazendo é ativar um host Docker do servidor Windows e configurar as portas. Se o mecanismo docker do Windows suportar isso (o que é), isso funcionará.

  1. Qual será a aparência do comando "docker-machine create" no Windows?

As opções extras seriam --azure-os "windows", --azure-winrm-username "nome de usuário", --azure-winrm-password "senha" semelhante a como @StefanScherer sugeriu acima.

Em relação à linha do tempo, eu já rebasei a maior parte da minha alteração com o novo driver do Azure (https://github.com/docker/machine/pull/3159), mas @ahmetalpbalkan , eu e alguns outros encontramos um problema com a autenticação (https: //github.com/docker/machine/issues/3201) e @ahmetalpbalkan fizeram um comentário sobre como voltar para um driver mais antigo (https://github.com/docker/machine/issues/3201#issuecomment-199409527). Precisamos primeiro resolver essa discussão para ir mais longe. Se voltarmos para o driver antigo, será mais fácil fazer a fusão.

Você vai ao Build? Seria ótimo sincronizar pessoalmente.

@ppadala Eu estarei lá! Docker também está oferecendo um almoço às 12h30 em Delarosa, 37 Yerba Buena. Ping @ ah3rz para detalhes

@ppadala não estarei no Build, mas meu gerente @ taylorb-microsoft estará, então você pode sincronizar com ele :-)

@ppadala, você mencionou que foi desbloqueado , diga-nos se há algo que podemos fazer para ajudar.

Atualizar. Eu tenho a maior parte da mudança baseada em uma nova base, sou capaz de ativar os servidores Windows. Limpar o código a ser enviado para pull em alguns dias.

Precisamos, entretanto, decidir sobre a imagem do servidor Windows a ser usada como imagem de VM de destino. A imagem oficial atual do Windows Server Core tem apenas RDP habilitado. Preciso que o WinRM esteja habilitado na imagem. Observe que não se trata de habilitar o WinRM por meio do Azure (https://msdn.microsoft.com/en-us/library/azure/dn495299.aspx), como algumas pessoas sugeriram. Isso só abre portas WinRM no Azure. A instância em execução da imagem (posteriormente capturada em uma nova imagem por meio do sysprep) deve ter executado os comandos a seguir.

PS C:\> winrm set winrm/config/service/auth @{Basic=”true”}
PS C:\> winrm set winrm/config/service @{Allowunencrypted=”true”}
PS C:\> New-NetFirewallRule -Protocol TCP -LocalPort 5985 -Direction Inbound -Action Allow -DisplayName winrm
PS C:\> winrm quickconfig

Outro problema é que a instalação do docker engine leva muito mais tempo do que a instalação no lado do Linux. A VM também deve ser reinicializada. Estou usando os seguintes comandos para instalação do docker engine.

PS C:\> wget -uri https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1
PS C:\> powershell.exe -NoProfile C:\Install-ContainerHost.ps1 -HyperV

Reboot

PS C:\> Install-ContainerImage -Name WindowsServerCore -Version 10.0.10586.0
PS C:\> wget https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/live/windows-server-container-tools/Update-ContainerHost/Update-ContainerHost.ps1 -OutFile Update-ContainerHost.ps1
PS C:\> ./Update-ContainerHost.ps1

Perguntas para @ enderb-ms e @ahmetalpbalkan : a Microsoft pode fornecer uma imagem com WinRM habilitado? Enquanto estamos fazendo isso, devemos considerar o pacote docker-engine também com ele, em vez da instalação sob demanda? Embora isso restrinja os usuários a uma versão empacotada específica do docker-engine, a VM estará disponível muito mais rápido (caso contrário, o usuário executa docker-machine e espera uma hora ou mais para obter seu host docker do Windows Server.).

Atualmente, criei uma imagem personalizada que tem o WinRM e o docker-engine instalados e configurados.

@ppadala é a agência em algum lugar pública? Com a maneira como você inicia as VMs, você não consegue executar scripts de inicialização como aqui? https://github.com/Azure/azure-quickstart-templates/blob/875d139c16c9c023dce519e6dd48c707e3473346/201-vm-winrm-windows/azuredeploy.json#L183

@ppadala é a agência em algum lugar pública? Com a maneira como você inicia as VMs, você não consegue executar scripts de inicialização como aqui? https://github.com/Azure/azure-quickstart-templates/blob/875d139c16c9c023dce519e6dd48c707e3473346/201-vm-winrm-windows/azuredeploy.json#L183

A agência é pública, mas ainda não verifiquei a última. Deixe-me ver se consigo fazer isso.

@ppadala é a agência em algum lugar pública? Com a maneira como você inicia as VMs, você não consegue executar scripts de inicialização como aqui? https://github.com/Azure/azure-quickstart-templates/blob/875d139c16c9c023dce519e6dd48c707e3473346/201-vm-winrm-windows/azuredeploy.json#L183

Tentei passar os recursos, mas obtive um erro

Error creating machine: Error in driver during machine creation: compute/VirtualMachinesClient:CreateOrUpdate 400 Failure responding to request -- Original Error: azure: Service returned an error. Code="InvalidRequestContent" Message="The request content was invalid and could not be deserialized: 'Could not find member 'resources' on object of type 'ResourceDefinition'. Path 'resources', line 1, position 953.'." Status=400

Aqui está o código que tenta fazer isso: https://github.com/ppadala/machine/blob/azure-windows/drivers/azure/azureutil/azureutil.go#L540. Você pode ver os commits https://github.com/ppadala/machine/commits/azure-windows para ver minhas mudanças para obter suporte do Windows.

A maneira certa de fazer isso é fazer com que o go-sdk do Azure exponha uma função fácil de usar para preparar esse modelo de implantação. É difícil traduzir as coisas certas para passar olhando os modelos de implantação json. @ahmetalpbalkan , alguma

Essencialmente, existem dois caminhos.

  1. Tenha uma imagem personalizada com WinRM (e possivelmente docker-engine) instalado e configurado. Então, o código que tenho até agora está pronto para ser executado.
  2. Comece com uma imagem genérica do Windows Server 2016, descubra a instalação por meio de modelos e prossiga com o restante das etapas, como upload de certificados, etc.

@ppadala Também estou perplexo. Aposto que a API está tentando dizer que você não pode especificar extensões na chamada de criação de VM. Por exemplo, quando você implanta um modelo ARM com extensões e observa a implantação acontecendo, o ARM primeiro cria a VM e, em seguida, cria o recurso de extensão separadamente, uma vez que a VM é criada ...

Deve haver alguns métodos para adicionar extensões às VMs no pacote arm/compute . Eu sugiro adicionar extensões uma vez que a VM é criada, isso deve desbloquear você.

Obrigado @ahmetalpbalkan. Eu adicionei VirtualMachineExtension após a criação da VM e funcionou. Tive que lutar um pouco para descobrir a maneira certa de configurar os ouvintes HTTPS WinRM, mas tenho a solicitação de pull # 3329 pronta. Deixe-me saber seus comentários.

Também carreguei os binários em https://www.dropbox.com/sh/kpc46xtc8su2sj7/AABtxVIVbGo8KLy7tu6HnWwza?dl=0 para facilitar o teste.

Uso: três novos parâmetros são adicionados ao driver do Azure

--azure-os "linux"                  OS for the Azure VM (Windows|Linux)
--azure-winrm-user "docker-user"    Username for WinRM login [$AZURE_WINRM_USER]
--azure-winrm-password              Password for WinRM login [$AZURE_WINRM_PASSWORD]

Comando de amostra

docker-machine -D create -d azure --azure-subscription-id $(cat ~/azure/subid) --azure-os "windows" --azure-image MicrosoftWindowsServer:WindowsServer:2016-Technical-Preview-with-Containers:2016.0.20151118 --azure-winrm-password "mysecretpassword" vhost-win-test

@ppadala @ahmetalpbalkan Não sei se você já incorporou isso, mas este artigo sobre como proteger o daemon do Windows também pode ser bom: https://github.com/Microsoft/Virtualization-Documentation/tree/master/windows-server- container-tools / DockerTLS

/ cc @PatrickLang @swernli

@ppadala Obrigado, isso é totalmente incrível. Acabei de experimentar o comando de exemplo para criar uma máquina TP4 no Azure. E sim, funcionou com seus binários pré-construídos logo que saíram da caixa. (ok, você deve inserir uma senha mais complexa para atender aos requisitos de complexidade de senha do Windows)

Um Docker Engine seguro com um comando docker-machine tão simples. Isso é um grande avanço!

$ ./docker-machine-Darwin-x86_64 -D create -d azure --azure-subscription-id $(pass azure) --azure-os "windows" --azure-image MicrosoftWindowsServer:WindowsServer:2016-Technical-Preview-with-Containers:2016.0.20151118 --azure-winrm-password $(pass azure-winrm-password) vhost-win-test
$ eval $(./docker-machine-Darwin-x86_64 env vhost-win-test)
$ docker version
Client:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Fri Feb 12 22:11:40 UTC 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.10.0-dev
 API version:  1.22
 Go version:   go1.5.1
 Git commit:   59a341e
 Built:        Fri Nov 13 17:23:07 UTC 2015
 OS/Arch:      windows/amd64

@ppadala E o que é ainda mais fantástico é que docker-machine rm -f vhost-win-test limpa TUDO - Eu me esforcei tantas vezes limpando todas as partes de uma VM criada com "implantar no azul", sempre perdi um botão "desimplantar do azul" 😄

@ppadala @ahmetalpbalkan Não sei se você já incorporou isso, mas este artigo sobre como proteger o daemon do Windows também pode ser bom: https://github.com/Microsoft/Virtualization-Documentation/tree/master/windows-server- container-tools / DockerTLS

Obrigado pelo link @friism. Sim, o docker-engine já está protegido com TLS semelhante ao Linux. docker-machine create workflow gera as credenciais (cert, key e ca) e eu uso o WinRM para carregá-las no Windows Server.

@ppadala Obrigado, isso é totalmente incrível. Acabei de experimentar o comando de exemplo para criar uma máquina TP4 no Azure. E sim, funcionou com seus binários pré-construídos logo que saíram da caixa. (ok, você deve inserir uma senha mais complexa para atender aos requisitos de complexidade de senha do Windows)

Obrigado por experimentar @StefanScherer. A senha em texto simples é a única parte que não gosto aqui (gosto da abordagem do seu passe). Podemos mudar para uma autenticação baseada em certificado posteriormente. Infelizmente, a biblioteca do packer ainda não oferece suporte para isso.

@ppadala E o que é ainda mais fantástico é que uma docker-machine rm -f vhost-win-test limpa TUDO - eu lutei tantas vezes limpando todas as partes de uma VM criada com "deploy to azure", sempre perdi um " desimplante do botão azul "😄

O crédito vai para @ahmetalpbalkan por mudar para o Azure ARM e escrever uma "limpeza" limpa.

@ppadala, isso é incrível. Ótimo trabalho! Acho que a questão agora será como mesclar isso ao driver azure em curto e a outros drivers (como google / aws) a longo prazo.

@ahmetalpbalkan a solicitação pull # 3329 já está sincronizada com o master e mesclada com o driver azure, será ótimo se você puder revisar e fornecer comentários. Atualmente, apenas o Azure tem VMs do Windows Server 2016, mas o código é escrito de forma que suporte para GCP, AWS, vSphere e outros facilmente.

Atualmente, apenas o Azure tem VMs do Windows Server 2016, mas o código é escrito de forma que suporte para GCP, AWS, vSphere e outros facilmente.

  • @ppadala
    Isso significa que o suporte aos provedores locais de vm está no horizonte?

@ppadala @srounce Eu diria que alguém deveria dar uma olhada nos recursos de execução do WinRM e do Script de Inicialização de APIs AWS / GCE / outros para descobrir se a funcionalidade pode ser transferida para outros drivers com um conjunto mínimo de alterações.

@ppadala @ahmetalpbalkan O driver 'azure' da docker-machine pode ser usado com AzureStack ?

@nilleb Receio que ainda não. Se você precisar, abra uma edição separada.

Acabei de baixar a janela de encaixe para windows que tem o 1.12 RC2 que tem o 0.8.0-rc1, mas quando tento a opção "azure-os" "windows", parece que não funciona. Informe onde posso adquirir uma versão docker-machine que possa criar hosts docker TP5 do Windows 2016 no Azure.

Obrigado,

@SharadGumaste qual é o erro quando você diz "não funciona"? você tentou especificar a imagem com --azure-image ?

Acabei de baixar a janela de encaixe para windows que tem o 1.12 RC2 que tem o 0.8.0-rc1, mas quando tento a opção "azure-os" "windows", parece que não funciona. Informe onde posso adquirir uma versão docker-machine que possa criar hosts docker TP5 do Windows 2016 no Azure.

@SharadGumaste Suponho que você estava testando a versão lançada. O patch para suporte ao Windows (opção azure-os windows) ainda não foi mesclado.

Pradeep, sim, fiz a atualização do software docker. O que é melhor
maneira de obter binários de seu trabalho? Estou muito perto de fazer uma demonstração para um
cliente nosso, exceto que não consigo criar um servidor Windows barebone e instalar
docker host relacionado a coisas do zero e adicionar essa máquina em
docker-machine e compilar e implantar a partir do Visual Studio.
Estou preso em certificados TLS etc ...

Agradecemos antecipadamente por qualquer ajuda.

Na quinta-feira, 23 de junho de 2016, Pradeep Padala [email protected] escreveu:

Acabei de baixar o docker para windows que tem o 1.12 RC2 que
tem 0.8.0-rc1, mas quando tento a opção "azure-os" "windows" ele faz
parece não funcionar. Por favor, deixe-me saber onde eu posso adquirir uma docker-machine
versão que pode criar hosts docker TP5 do Windows 2016 no Azure.

@SharadGumaste https://github.com/SharadGumaste Acho que você estava
tentando a versão lançada. O patch para suportar o Windows (azure-os
opção do Windows) ainda não foi mesclado.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/docker/machine/issues/2907#issuecomment -228218888,
ou silenciar o tópico
https://github.com/notifications/unsubscribe/AH3YqqQLlXWUnSdw4i2TzsqXa4gHmTVYks5qOxt1gaJpZM4HKwbT
.

"A common mistake people make when trying to design something

completamente infalível é subestimar a engenhosidade de tolos completos. "

– Douglas Adams, author (1952 – 2001)

@SharadGumaste você pode enviar um e-mail para [email protected]? Tenho um repositório separado para docker-machine para Windows, posso enviar-lhe instruções sobre a configuração.

Há alguma notícia sobre a ativação de um host Windows Docker em um VirtualBox local?

Alguém tem um protótipo capaz de rodar VMs do Windows no Azure?

@djanosik Estou tentando fazer com que a docker-machine acione instâncias de escalonamento automático do Windows OpenStack e EC2 para minhas compilações GitLab CI. Peguei o ramo de relações públicas de @ppadala , https://github.com/davidarcher/machine/tree/azure_winrm .

Segui as instruções de @ jen20 para construir um Windows AMI com SSH. Ele funciona com a Docker Machine até o ponto de provisionamento, onde falha porque não há um arquivo /etc/os-release . Agora que o SSH no Windows está disponível (com algum esforço), podemos obter um provisionador Docker Machine baseado em SSH para Windows?

Esta página foi útil?
0 / 5 - 0 avaliações