Puede usar Docker Desktop para Windows como motor y Docker para Linux como cliente en WSL en Ubuntu / Debian en Windows. Conéctelos a través de TCP.
Instale Docker Desktop para Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows
Si desea utilizar Contenedores de Windows en lugar de Contenedores de Linux, el cliente de Docker de Linux puede administrar ambos contenedores de tipo. El espacio de usuario bash.
Desde la versión 17.03.1-ce-win12 (12058) debe marcar Exponer daemon en tcp: // localhost: 2375 sin TLS para permitir que el cliente Linux Docker continúe comunicándose con el demonio Windows Docker por TCP
Sigue estos pasos:
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
o
env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps
Para hacerlo permanente:
mkdir ~/bin
mv ~/docker/docker ~/bin
Agregue las variables correspondientes a .bashrc
export DOCKER_HOST=tcp://0.0.0.0:2375
export PATH=$PATH:~/bin
Por supuesto, puede instalar 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
O usando python pip
sudo apt-get install python-pip bash-completion
sudo pip install docker-compose
Y la finalización de Bash. La mejor 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
Lo probé con la versión 2.1.0.1 (37199) de Docker Desktop con 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**
Volúmenes
Tenga cuidado al agregar volúmenes. La ruta C:\dir
será visible como /mnt/c/dir
en WSL y como /c/dir/
por el motor Docker. Puedes superarlo permanentemente:
sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
Debe salir y volver a cargar WSL después de realizar el cambio en wsl.conf para que WSL lea sus cambios en el inicio.
ACTUALIZAR
de: Novedades para la línea de comandos en Windows 10 versión 1803
Sockets Unix Los Sockets
Unix no eran compatibles con Windows, ¡y ahora sí! También puede comunicarse a través de sockets Unix entre Windows y WSL. Una de las mejores cosas de esto es que permite a WSL ejecutar Linux Docker Client para interactuar con Docker Daemon que se ejecuta en Windows.
ACTUALIZAR
Este script y el uso de Sockets Unix se incluyeron en la configuración pengwin de Pengwin.
Saludos
bash
espacio de usuario. Es un espacio de usuario de Linux real y bastante completo, pero sin X Windows, es decir, solo texto. Decir "bash" comunica bastante bien la limitación de solo texto ..