Vous pouvez utiliser Docker Desktop pour Windows en tant que moteur et Docker pour Linux en tant que client dans WSL sous Ubuntu / Debian sous Windows. Connectez-les via TCP.
Installez Docker Desktop pour Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows
Si vous souhaitez utiliser des conteneurs Windows au lieu de conteneurs Linux, les deux types de conteneurs peuvent être gérés par le client docker Linux dans l'espace utilisateur bash.
Depuis la version 17.03.1-ce-win12 (12058), vous devez vérifier le démon Expose sur tcp: // localhost: 2375 sans TLS pour permettre au client Linux Docker de continuer à communiquer avec le démon Windows Docker via TCP.
Suivez ces étapes:
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
Pour le rendre permanent:
mkdir ~/bin
mv ~/docker/docker ~/bin
Ajouter les variables correspondantes à .bashrc
export DOCKER_HOST=tcp://0.0.0.0:2375
export PATH=$PATH:~/bin
Bien sûr, vous pouvez installer 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 en utilisant python pip
sudo apt-get install python-pip bash-completion
sudo pip install docker-compose
Et achèvement de Bash. La meilleure partie:
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
Je l'ai testé avec la version 2.1.0.1 (37199) de Docker Desktop avec 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**
Les volumes
Faites attention lorsque vous ajoutez des volumes. Le chemin C:\dir
sera visible comme /mnt/c/dir
sur le WSL et /c/dir/
par le moteur de menu fixe. Vous pouvez le surmonter en permanence:
sudo bash -c "echo -e '[automount] \nroot = /'>/etc/wsl.conf"
Vous devez quitter et recharger WSL après avoir modifié wsl.conf pour que WSL lise vos modifications au lancement.
MISE À JOUR
de: Nouveautés de la ligne de commande dans Windows 10 version 1803
Unix Sockets
Unix Sockets n'étaient pas supportés sous Windows, et maintenant ils le sont! Vous pouvez également communiquer via des sockets Unix entre Windows et WSL. L’un des avantages de cette solution est qu’il permet à WSL d’exécuter le client Docker Linux pour interagir avec le démon Docker exécuté sous Windows.
MISE À JOUR
Ce script et l'utilisation de Unix Sockets étaient inclus dans la configuration de pengwin de Pengwin.
Cordialement
bash
espace utilisateur. C’est un véritable espace utilisateur Linux assez complet, mais sans X Windows, c’est-à-dire du texte uniquement. Dire "bash" communique assez bien la limitation de texte seulement.