D'après ce que j'avais compris, l'exécution de docker sur d'autres systèmes d'exploitation constituait la principale limitation, à savoir les conteneurs réseau Linux qui le rendaient possible. (Certainement pour les Mac).
Récemment, Microsoft a annoncé la version bêta d'un mode utilisateur Linux Ubuntu s'exécutant de manière native sur Windows 10. Ce programme peut exécuter des fichiers binaires compilés au format ELF sous Windows (contrairement à cygwin qui nécessite une compilation.)
Ma question est la suivante: pouvez-vous exécuter Docker en mode natif sur le nouvel espace utilisateur bash Windows 10 (Ubuntu)?
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.Réponses:
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:
ou
Pour le rendre permanent:
Ajouter les variables correspondantes à .bashrc
Bien sûr, vous pouvez installer docker-compose
Ou en utilisant python pip
Et achèvement de Bash. La meilleure partie:
Je l'ai testé avec la version 2.1.0.1 (37199) de Docker Desktop avec Hyper-V:
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: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
MISE À JOUR
Ce script et l'utilisation de Unix Sockets étaient inclus dans la configuration de pengwin de Pengwin.
Cordialement
la source
docker.exe
directement le sous-système docker. Toutefois, notez que le menu fixe pour Windows utilisera les variables et les configurations Windows.En ce moment (avril 2016), la réponse est la suivante:
Nous ne savons pas encore (mais probablement pas).
Les faits
La spéculation
La question est donc de savoir si les appels système dont Docker a besoin (pour le chroot et les espaces de noms, entre autres) ont été implémentés ou non. La réponse à cette question est probablement "non". Docker nécessite des fonctionnalités relativement sophistiquées (et spécifiques à Linux) pour la gestion des processus et des ressources, ainsi que pour l'isolation des processus. Bien qu'il soit probablement possible de répliquer tout cela sous Windows, cela demanderait beaucoup de travail. Et puisque l'objectif de cette fonctionnalité de Windows semble être d'exécuter des programmes d'espace utilisateur Linux, il semble improbable qu'ils aient effectué tout le travail (et l'ont gardé secret). .
Cependant, il n'y a aucune information définitive dans les deux cas, autant que je sache.
Ports Docker existants
Bien entendu, si Microsoft décide de demander la prise en charge de Docker dans Windows 10, il sera probablement en mesure de l’offrir. Il existe des précédents pour le portage de Docker vers un autre noyau:
la source
Le premier aperçu d'initié a été publié hier. J'ai essayé d'installer Docker mais cela échoue avec les problèmes suivants:
Il semblerait donc que pour le premier aperçu, cela ne fonctionne pas actuellement. Cependant, comme beaucoup de gens l’ont spéculé, cela pourrait fonctionner dans une version ultérieure.
la source
docker ps
échoue avec:Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?
Non, ce n'est pas possible.
Docker a besoin de plusieurs choses pour exécuter des conteneurs:
Ce sont toutes les fonctionnalités du noyau qui sont implémentées sous Linux. Malheureusement, la plupart d’entre eux n’ont pas de fonctionnalité similaire à utiliser en remplacement de Windows (ni dans le sous-système Linux que Microsoft a implémenté dans le noyau Windows). Tous ces éléments doivent être fournis par le système d'exploitation.
la source
chroot
, sachez que l’environnement Ubuntu a déjà une racine différente de celle de WIN32.À partir de la mise à jour du créateur (publiée le 13 juin 2017), vous pouvez exécuter un exécutable Windows natif directement dans WSL. Cela signifie que si vous avez déjà installé Docker pour Windows, vous pouvez simplement appeler les
docker
fichiers binaires installés sousC:\Program Files
. Comme ils se terminent par.exe
l'option la plus simple, il faut créer des alias. Quelque chose comme ce qui suit dans votre.bashrc
travail devrait:Cela crée des alias pour tous les fichiers du
DOCKER_BIN
répertoire:Une mise en garde: vous obtiendrez un message d'erreur du type " Impossible de traduire le répertoire de travail actuel " si exécuté à partir d'un répertoire Linux. Juste
cd
dans un répertoire Windows (par exemple/mnt/c/Users/YourUsername
) et vous devriez être bon.la source
docker
binaire Windows et que vous le faites uniquement via le shell Linux. Je ne sais pas s'il existe un bon moyen d'y parvenir.Une fois que Docker 1.12 est publié et que le client Linux Docker est séparé, vous devriez pouvoir exécuter le client Docker dans Windows 10 bash.
Cela peut sembler peu compte tenu du fait que vous avez un client Windows Docker, mais cela est utile si vous avez des chaînes d’outils Linux qui incluent docker pour ses fonctionnalités côté client.
la source
Dans Windows 10 Version 1607 Build 1493.10, vous pouvez l'installer avec succès sur Ubuntu Bash, mais cela ne fonctionne pas :(
Une simple "version docker" vous dira:
Si vous exécutez ensuite "sudo docker -d", vous obtenez l'erreur suivante:
Donc, c'est vraiment un bouchon du côté bash.
Néanmoins, vous pouvez installer Docker pour Windows et cela fonctionne comme un charme, vous pouvez évidemment déployer des serveurs Linux et tout ce dont vous avez besoin.
la source
À compter de septembre 2016, n °
Toutes les implémentations actuelles de Docker sur Windows utilisent la virtualisation. Docker 1.12 utilise un hyperviseur dans Windows, ce qui supprime l'avantage de la conteneurisation par rapport à la virtualisation.
Docker a besoin de plus que simplement utiliser des appels systèmes Linux.
Il a besoin de groupes de contrôle de processus (cgroups), d'un système de fichiers empilable (aufs), ainsi que d'autres systèmes basés sur Linux en dehors du noyau.
Ni cgroups ni aufs ne sont nativement dans le noyau Windows 10.
Il existe une implémentation de Windows Server 2016 ici: https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server ..mais cela n'exécutera que certains services Windows, par exemple IIS et non Ubuntu.
la source
Docker ne fonctionne pas actuellement dans la version actuelle (14316) - en supposant que vous puissiez le faire installer.
la source
De: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/
la source