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-windowsWenn Sie Windows-Container anstelle von Linux-Containern verwenden möchten, können beide Typcontainer vom Linux-Docker-Client im Bash-Benutzerbereich verwaltet werden.
Seit Version 17.03.1-ce-win12 (12058) müssen Sie überprüfen Daemon auf tcp: // localhost: 2375 ohne TLS verfügbar machen damit der Linux-Docker-Client weiterhin über TCP mit dem Windows-Docker-Daemon kommunizieren kann
Folgendermaßen:
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
oder
env DOCKER_HOST=tcp://0.0.0.0:2375 ./docker ps
Um es dauerhaft zu machen:
mkdir ~/binmv ~/docker/docker ~/bin
Fügen Sie die entsprechenden Variablen hinzu .bashrc
export DOCKER_HOST=tcp://0.0.0.0:2375export PATH=$PATH:~/bin
Natürlich können Sie docker-compose installieren
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
Oder mit Python pip
sudo apt-get install python-pip bash-completionsudo pip install docker-compose
Und Bash-Vervollständigung. Der beste Teil:
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
Ich habe es mit der Version 2.1.0.1 (37199) von Docker Desktop mit Hyper-V getestet:
$ 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**
Datenmengen
Seien Sie vorsichtig, wenn Sie Volumes hinzufügen. Pfad C:\dir
wird sichtbar als /mnt/c/dir
auf WSL und as /c/dir/
von der Docker-Engine. 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 vorgenommen haben.conf, damit WSL Ihre Änderungen beim Start einliest.
UPDATE
von: Was ist neu für die 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 daran ist, dass WSL den Linux-Docker-Client ausführen kann, um mit dem unter Windows ausgeführten Docker-Daemon zu interagieren.
UPDATE
Dieses Skript und die Verwendung von Unix-Sockets wurden in Pengwin's pengwin-Setup.
Bezug