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 do modo de usuário Ubuntu linux em execução 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 do Windows 10 (Ubuntu)?
bash
espaço de usuário. É um espaço de usuário do Linux real e razoavelmente completo, mas sem o X Windows, ou seja, apenas texto. Dizer "bash" comunica a limitação só de texto muito bem ..Respostas:
Você pode usar o Docker Desktop para Windows como o mecanismo e o Docker para Linux como o cliente na 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 Se você deseja usar o Windows Containers em vez do Linux Containers, os dois contêineres de tipo podem ser gerenciados pelo cliente docker do Linux em o espaço do usuário bash.
Desde a versão 17.03.1-ce-win12 (12058), é necessário verificar o daemon Expose em tcp: // localhost: 2375 sem TLS para permitir que o cliente Linux Docker continue a se comunicar com o daemon do Windows Docker por TCP
Siga esses passos:
ou
Para torná-lo permanente:
Adicione as variáveis correspondentes ao .bashrc
Obviamente, você pode instalar o docker-compose
Ou usando python pip
E conclusão do 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
será visível como/mnt/c/dir
no WSL e no/c/dir/
mecanismo do docker. Você pode superá-lo permanentemente:Você deve sair e recarregar o WSL após fazer a alteração no wsl.conf para que o WSL leia suas alterações ao iniciar.
ATUALIZAR
from: O que há de novo para a linha de comando no Windows 10 versão 1803
ATUALIZAR
Este script e o uso do Unix Sockets foram incluídos na configuração pengwin do Pengwin .
Saudações
fonte
docker.exe
diretamente para consultar / interagir com o subsistema docker. No entanto, observe que a janela de encaixe para janelas usará as variáveis e configurações do Windows.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 os syscalls de que o Docker precisa (para chroot e namespaces, entre outras coisas) foram implementados ou não. A resposta é que provavelmente é "não". O Docker requer funcionalidade bastante sofisticada (e específica do Linux) para gerenciamento de processos e recursos e isolamento de processos. Embora provavelmente seja possível replicar tudo isso no Windows, seria muito trabalhoso, e como o objetivo desse recurso do Windows parece estar executando programas de espaço de usuário do Linux, parece improvável que eles tenham feito todo o trabalho (e mantido em segredo) .
No entanto, não há informações definitivas de qualquer maneira, pelo que sei.
Portas do Docker existentes
Obviamente, se a Microsoft decidir que deseja suporte ao Docker no Windows 10, provavelmente será capaz de oferecê-lo. Há algum precedente para transportar o Docker para um kernel diferente:
fonte
A primeira prévia foi divulgada ontem. Tentei instalar o docker, mas ele falhou com o seguinte:
Parece que, para a primeira visualização, atualmente não funciona. No entanto, como muitas pessoas especularam, isso pode funcionar em uma versão futura.
fonte
docker ps
falha com:Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?
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 substituir (nem no subsistema Linux que a Microsoft implementou no kernel do Windows). Tudo isso precisa ser fornecido pelo sistema operacional.
fonte
chroot
, perceba que o ambiente Ubuntu já possui uma raiz diferente da do WIN32.A partir da Atualização do Criador (lançada publicamente em 13 de junho de 2017), você pode executar o executável nativo do Windows diretamente na WSL. Isso significa que, se você já instalou o Docker for Windows, pode simplesmente chamar os
docker
binários instalados emC:\Program Files
. Como eles terminam na.exe
opção mais fácil, é necessário 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 executado a partir de um diretório Linux. Apenas
cd
em um diretório do Windows (por exemplo/mnt/c/Users/YourUsername
) e você deve ser bom.fonte
docker
binário do Windows e apenas fazendo isso através do shell do Linux. Não tenho certeza se existe uma boa maneira de conseguir isso.Depois que o Docker 1.12 for lançado e o cliente do Linux Docker estiver separado, você poderá executar o cliente do Docker no Windows 10 bash.
Isso pode não parecer muito, desde que você tenha um cliente Docker Windows, mas é útil se você tiver cadeias de ferramentas Linux que incluam docker para sua funcionalidade do lado do cliente.
fonte
No Windows 10, versão 1607 Build 1493.10, você pode instalá-lo com êxito no Ubuntu Bash, mas não funciona :(
Uma simples "versão docker" dirá:
Se você executar "sudo docker -d", receberá o seguinte erro:
Então essa é definitivamente uma rolha do lado da festança.
No entanto, você pode instalar o Docker for Windows e ele funciona como um encanto; obviamente, você pode implantar servidores Linux e tudo o que precisa.
fonte
Em setembro de 2016, nº
Todas as implementações atuais do Docker no Windows usam virtualização, o Docker 1.12 usa um hipervisor no Windows, removendo a vantagem da conteinerização sobre a virtualização.
O Docker precisa mais do que apenas usar chamadas de sistemas Linux.
Ele precisa de grupos de controle de processos (cgroups), um sistema de arquivos empilhável (aufs) e 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 só executará alguns serviços do Windows, por exemplo, IIS, e não o Ubuntu
fonte
No momento, o Docker não funciona na compilação atual (14316) - supondo que você possa instalá-lo.
fonte
De: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/
fonte