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.
Instalar Docker Desktop para Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windowsSi desea utilizar Contenedores de Windows en lugar de contenedores de Linux, ambos contenedores de tipo pueden ser administrados por el cliente docker de Linux en el espacio de usuario de bash.
Desde la versión 17.03.1-ce-win12 (12058) debe verificar Exponer demonio en tcp: / / localhost: 2375 sin TLS para permitir que el cliente Docker de Linux continúe comunicándose con el demonio Docker de Windows por TCP
Siga estos pasos:
cdwget https://download.docker.com/linux/static/stable/`uname -m`/docker-19.03.1.tgztar -xzvf docker-*.tgzcd docker./docker -H tcp://0.0.0.0:2375 ps
o
env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps
Para que sea permanente:
mkdir ~/binmv ~/docker/docker ~/bin
Agregue las variables correspondientes a .bashrc
export DOCKER_HOST=tcp://0.0.0.0:2375export PATH=$PATH:~/bin
Por supuesto, puede instalar docker-compose
sudo -icurl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
O usando python pip
sudo apt-get install python-pip bash-completionsudo pip install docker-compose
Y finalización de Bash. La mejor parte:
sudo -iapt-get install bash-completioncurl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker > /etc/bash_completion.d/dockercurl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
Lo probé usando la versión 2.1.0.1 (37199) de Docker Desktop usando Hyper-V:
$ docker versionClient: 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: falseServer: 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: fec3683Look both client and server say **OS/Arch: linux/amd64**
Volumen
Tenga cuidado al agregar volúmenes. Camino C:\dir
será visible como /mnt/c/dir
en WSL y as /c/dir/
por docker engine. Puedes superarlo de forma permanente:
sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
Debe salir y volver a cargar WSL después de realizar el cambio a WSL.conf para que WSL lea los cambios en el lanzamiento.
ACTUALIZAR
de: Novedades de la línea de comandos en Windows 10 versión 1803
Sockets Unix Los sockets Unix no eran compatibles con Windows, y ahora lo son. 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 el cliente Docker de Linux para interactuar con el demonio Docker que se ejecuta en Windows.
ACTUALIZAR
Este script y el uso de sockets Unix se incluyeron en Pengwin's pengwin-configuración.
Respecto