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:
cd
wget https://download.docker.com/linux/static/stable/`uname -m`/docker-19.03.1.tgz
tar -xzvf docker-*.tgz
cd docker
./docker -H tcp://0.0.0.0:2375 ps
ou
env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps
Para torná-lo permanente:
mkdir ~/bin
mv ~/docker/docker ~/bin
Adicione as variáveis correspondentes ao .bashrc
export DOCKER_HOST=tcp://0.0.0.0:2375
export PATH=$PATH:~/bin
Obviamente, você pode instalar o docker-compose
sudo -i
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Ou usando python pip
sudo apt-get install python-pip bash-completion
sudo pip install docker-compose
E conclusão do Bash. A melhor parte:
sudo -i
apt-get install bash-completion
curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker > /etc/bash_completion.d/docker
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
Eu testei usando a versão 2.1.0.1 (37199) do Docker Desktop usando o Hyper-V:
$ docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89e8a
Built: Thu Jul 25 21:17:37 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:17:52 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
Look both client and server say **OS/Arch: linux/amd64**
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:
sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
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
Unix Sockets Os
Unix Sockets não eram suportados no Windows e agora são! Você também pode se comunicar através de soquetes Unix entre Windows e WSL. Uma das grandes vantagens disso é que ele permite que a WSL execute o Linux Docker Client para interagir com o Docker Daemon em execução no Windows.
ATUALIZAR
Este script e o uso do Unix Sockets foram incluídos na configuração pengwin do Pengwin .
Saudações
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 ..