Meu entendimento era que a principal limitação da execução do docker em outros sistemas operacionais eram os contêineres da rede Linux que tornavam isso possível. (Certamente para Macs).
Recentemente , a Microsoft anunciou uma versão beta de um modo de usuário Linux Ubuntu rodando nativamente no Windows 10. Isso pode executar binários compilados no formato ELF no Windows (ao contrário do cygwin, que requer uma compilação).
Minha pergunta é: você pode executar o Docker nativamente no novo espaço de usuário bash do Windows 10 (Ubuntu)?
Você pode usar o Docker Desktop para Windows como mecanismo e o Docker para Linux como cliente no WSL no Ubuntu/Debian no Windows. Conecte-os via TCP.
Instale o Docker Desktop para Windows : https://hub.docker.com/editions/community/docker-ce-desktop-windows o espaço do usuário bash.
Desde a versão 17.03.1-ce-win12 (12058), você deve verificar Expose daemon em tcp://localhost:2375 sem TLS para permitir que o cliente Linux Docker continue se comunicando com o daemon Windows Docker por TCP
Siga esses passos:
ou
Para torná-lo permanente:
Adicione as variáveis correspondentes a .bashrc
Claro, você pode instalar o docker-compose
Ou usando python pip
E conclusão Bash. A melhor parte:
Eu testei usando a versão 2.1.0.1 (37199) do Docker Desktop usando o Hyper-V:
Volumes
Tome cuidado ao adicionar volumes. O caminho
C:\dir
ficará visível como/mnt/c/dir
no WSL e como/c/dir/
no mecanismo do docker. Você pode superá-lo permanentemente:Você deve sair e recarregar o WSL depois de fazer a alteração no wsl.conf para que o WSL leia suas alterações na inicialização.
ATUALIZAR
de: O que há de novo para a linha de comando no Windows 10 versão 1803
ATUALIZAR
Este script e o uso de Unix Sockets foram incluídos no pengwin-setup do Pengwin .
Cumprimentos
A partir de agora (abril de 2016), a resposta é:
Ainda não sabemos (mas provavelmente não).
Os fatos
a especulação
Portanto, a questão é se as syscalls de que o Docker precisa (para chroot e namespaces, entre outras coisas) foram implementadas ou não. A resposta é provavelmente "não". O Docker requer uma funcionalidade bastante sofisticada (e específica do Linux) para gerenciamento de processos e recursos e isolamento de processos. Embora seja provavelmente possível replicar tudo isso no Windows, daria muito trabalho e, como o objetivo desse recurso do Windows parece ser executar programas de espaço de usuário do Linux, parece improvável que eles fizessem todo o trabalho (e o mantivessem em segredo). .
No entanto, não há informações definitivas de qualquer maneira, tanto quanto eu posso dizer.
Portas do Docker existentes
Obviamente, se a Microsoft decidir que deseja suporte ao Docker no Windows 10, provavelmente poderá oferecê-lo. Existe algum precedente para portar o Docker para um kernel diferente:
Não, isso não é possível.
O Docker precisa de várias coisas para executar contêineres:
Esses são todos os recursos do kernel implementados no Linux. Infelizmente, a maioria deles não possui um recurso semelhante no Windows para ser usado como substituto (nem no subsistema Linux que a Microsoft implementou no kernel do Windows). Tudo isso precisa ser fornecido pelo sistema operacional.
A primeira prévia do insider foi lançada ontem. Eu tentei instalar o docker, mas ele falhou com o seguinte:
Portanto, parece que, para a primeira visualização, não funciona no momento. No entanto, como muitas pessoas especularam, pode funcionar em uma versão futura.
A partir do Creator Update (lançado publicamente em 13 de junho de 2017), você pode executar o executável nativo do Windows diretamente no WSL. Isso significa que, se você já instalou o Docker para Windows , pode simplesmente invocar os
docker
binários instalados emC:\Program Files
. Como eles terminam,.exe
a opção mais fácil é criar aliases. Algo como o seguinte no seu.bashrc
deve funcionar:Isso cria aliases para todos os arquivos no
DOCKER_BIN
diretório:Uma ressalva: você receberá uma mensagem de erro como " Não é possível traduzir o diretório de trabalho atual " se for executado a partir de um diretório do Linux. Apenas
cd
em um diretório do Windows (por exemplo/mnt/c/Users/YourUsername
) e você deve ser bom.Depois que o Docker 1.12 for lançado e o cliente Linux Docker for separado, você poderá executar o cliente docker no bash do Windows 10.
Isso pode não parecer muito, já que você tem um cliente Windows do Docker, mas é útil se você tiver cadeias de ferramentas do Linux que incluem o docker para sua funcionalidade do lado do cliente.
No Windows 10 Versão 1607 Build 1493.10 você pode instalá-lo com sucesso no Ubuntu Bash, mas não funciona :(
Uma simples "versão docker" lhe dirá:
Se você executar "sudo docker -d", receberá o seguinte erro:
Portanto, este é definitivamente um obstáculo do lado do bash.
No entanto, você pode instalar o Docker para Windows e funciona como um encanto, obviamente você pode implantar servidores Linux e tudo o que precisa.
A partir de setembro de 2016, No.
Todas as implementações atuais do Docker no Windows usam virtualização, o Docker 1.12 usa um hypervisor no Windows - removendo assim a vantagem da conteinerização sobre a virtualização.
O Docker precisa de mais do que apenas usar chamadas de sistemas Linux.
Ele precisa de grupos de controle de processo (cgroups), um sistema de arquivos empilhável (aufs), além de outros sistemas baseados em Linux fora do kernel.
Nem cgroups nem aufs estão nativamente no kernel do Windows 10.
Há uma implementação do Windows Server 2016 aqui: https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server ..mas isso executará apenas alguns serviços do Windows, por exemplo, IIS, e não o Ubuntu
Atualmente, o Docker não funciona na compilação atual (14316) - supondo que você possa instalá-lo.
De: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/