Sie können Docker Desktop für Windows als Engine und Docker für Linux als Client in WSL unter Ubuntu / Debian unter Windows verwenden. Verbinden Sie sie über TCP.
Installieren Sie Docker Desktop für Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows
Wenn Sie Windows-Container anstelle von Linux-Containern verwenden möchten, können beide Container vom Linux-Docker-Client in verwaltet werden der bash benutzerraum.
Seit Version 17.03.1-ce-win12 (12058) müssen Sie Expose-Dämon unter tcp: // localhost: 2375 ohne TLS aktivieren , damit der Linux Docker-Client weiterhin über TCP mit dem Windows Docker-Dämon kommunizieren kann
Folge diesen Schritten:
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
oder
env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps
Um es dauerhaft zu machen:
mkdir ~/bin
mv ~/docker/docker ~/bin
Fügen Sie die entsprechenden Variablen zu .bashrc hinzu
export DOCKER_HOST=tcp://0.0.0.0:2375
export PATH=$PATH:~/bin
Natürlich können Sie docker-compose installieren
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
Oder mit Python Pip
sudo apt-get install python-pip bash-completion
sudo pip install docker-compose
Und Bash-Vervollständigung. Der beste Teil:
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
Ich habe es mit der Version 2.1.0.1 (37199) von Docker Desktop unter Verwendung von Hyper-V getestet:
$ 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**
Bände
Seien Sie vorsichtig, wenn Sie Volumes hinzufügen. Der Pfad C:\dir
wird sowohl /mnt/c/dir
in der WSL als auch in /c/dir/
der Docker-Engine angezeigt. Sie können es dauerhaft überwinden:
sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
Sie müssen WSL beenden und neu laden, nachdem Sie die Änderung an wsl.conf vorgenommen haben, damit WSL Ihre Änderungen beim Start einliest.
AKTUALISIEREN
from: Was ist neu in der Befehlszeile in Windows 10, Version 1803?
Unix-Sockets
Unix-Sockets wurden unter Windows nicht unterstützt, und jetzt sind sie es! Sie können auch über Unix-Sockets zwischen Windows und WSL kommunizieren. Eines der großartigen Dinge dabei ist, dass WSL den Linux Docker Client ausführen kann, um mit dem Docker Daemon unter Windows zu interagieren.
AKTUALISIEREN
Dieses Skript und die Verwendung von Unix Sockets waren in Pengwins Pengwin-Setup enthalten.
Grüße
bash
Userspace. Es ist ein echter, ziemlich vollständiger Linux-Benutzerbereich, aber ohne X-Windows, dh nur Text. Wenn Sie "bash" sagen, wird die Beschränkung nur auf Text sehr gut kommuniziert.