Est-il possible d'avoir un docker fonctionnant à l'intérieur de vmware?

24

J'exécute VMware Workstation pour mes besoins de développement et je dois maintenir différentes machines virtuelles pour différents environnements.

Docker semble autoriser l'exécution d'environnements diff dans des conteneurs, donc

  1. À l'intérieur de ma machine virtuelle Windows 10 x64, puis-je exécuter Docker et utiliser différentes images et conteneurs pour développer, créer et tester mon code? (N'oubliez pas que j'exécute mon environnement de développement dans VMware Workstation pendant que le docker utilise VirtualBox)

  2. Comment puis-je expédier / prendre cette application (code + base de données + API Web + .....) en production? La machine de production doit-elle bien fonctionner Docker?

Veuillez aider à clarifier.

Mise à jour

Par VMWare, je veux dire VMWare Workstation Pro.

Hamza Ahmed Zia
la source

Réponses:

14

Oui , il est tout à fait possible d'exécuter Docker dans une machine virtuelle. Docker est une solution de virtualisation légère, elle ne virtualise pas le matériel, vous ne serez donc pas affecté par les problèmes typiques des machines virtuelles imbriquées.

La liaison de port peut être un peu délicate, car vous devrez en quelque sorte connecter votre machine virtuelle dev-env dans VMware avec Docker VM dans VirtualBox.

Vous pouvez également rencontrer des problèmes si vous souhaitez exposer les dossiers de l'hôte à un service dans un conteneur Docker. Les systèmes de fichiers de Windows sont limités par rapport à ceux de Linux en termes de granularité des autorisations et certains services n'aiment pas cela. (ce problème n'est pas spécifique à Docker)

En général, votre application n'est pas verrouillée sur Docker en production. Les services Dockerized communiquent avec le monde via un réseau, pas différent de ce que font habituellement les services réguliers. Cependant, une application conçue avec Docker (ou, plus généralement, le cloud) à l'esprit peut être plus résistante aux pannes et plus facile à entretenir.

gronostaj
la source
6

Ce blog explique exactement comment utiliser Docker sous Windows avec VMWare Workstation. Vous pouvez même utiliser Windows 7.

https://stefanscherer.github.io/yes-you-can-docker-on-windows-7/

Installez d'abord le gestionnaire de paquets Chocolatey pour Windows (il s'agit d'une commande sur une ligne)

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

puis installez Docker pour utiliser la station de travail VMWare

choco install -y docker  
choco install -y docker-machine  
choco install -y docker-machine-vmwareworkstation  

Créer un VM par défaut

docker-machine --native-ssh create -d vmwareworkstation default  

Définissez vos variables d'environnement

docker-machine env | iex

Vous êtes maintenant prêt à commencer.

à vapeur
la source
Excellent! Merci de partager cela. PS: La dernière ligne est pour PowerShell, sans "| iex" qui fonctionnerait en cmd
Dmitry Gusarov
Chocolatey était nouveau pour moi, c'était un bon point de départ: hanselman.com/blog/…
ccook
1
Juste au cas où quelqu'un d'autre aurait essayé cela sans lire le lien, la commande "Créer un vm par défaut" devrait être: docker-machine --native-ssh create -d vmwareworkstation default(Remarque manquante "-")
Neil
2
  1. Oui, vous pouvez exécuter Docker sous Windows. Windows sur VMWare fonctionne également. Nous exécutons Docker sur des serveurs Linux sur VMWare.
  2. Le plus intelligent serait d'avoir également un docker sur votre machine de production, mais il serait possible de copier vos données à partir des conteneurs. Je ne le recommande cependant pas.
    Vous pouvez utiliser docker savepour enregistrer vos images Docker dans des fichiers.
    Je pense qu'il convient de mentionner qu'il n'est pas recommandé d'exécuter plusieurs applications dans le même conteneur et qu'il n'est pas recommandé de stocker des données à l'intérieur de vos conteneurs, vous devez utiliser des volumes pour cela.
Mikael Kjær
la source
Merci pour votre réponse, mais veuillez préciser. Vous avez dit que "Windows sur VMWare fonctionne également", mais vouliez-vous dire "Docker sur VMWare fonctionne également"?
Hamza Ahmed Zia
@HamzaAhmedZia "VMWare" Quoi exactement? ESXi? Poste de travail? Soyez précis et modifiez votre question. Workstation existe uniquement sous Linux et Windows.
Ramhound
@Ramhound je veux dire Workstation. Question mise à jour
Hamza Ahmed Zia
@HamzaAhmedZia donc dans le contexte de Workstation, l'auteur de cette réponse indique que vous pouvez exécuter Docker dans une VM Windows VMWare Workstation.
Ramhound
@Mikael Quelle est votre recommandation pour l'expédition à la production puisque vous dites que vous ne recommandez pas de copier les données des conteneurs?
Hamza Ahmed Zia
0

Il existe une différence majeure entre l'hôte docker (Linux ou Windows):

Ainsi, sur l'hôte docker Windows dans une station de travail Vmware (sur votre Windows physique), vous avez une machine virtuelle HyperV Linux imbriquée! Ce n'est pas un gros problème, faites juste attention à activer la virtualisation imbriquée.

François

François YACOB
la source
Ce point sur Windows hébergeant une machine virtuelle HyperV est incorrect si vous exécutez Docker pour Windows en mode conteneur Windows et que vous utilisez côte à côte LCoW. Il y a d'autres problèmes, mais la position des articles liés sur l'agnosticisme de Docker basé sur le système d'exploitation hôte est au mieux à court terme en fonction de la destination de Moby Project avec le docker basé sur Windows pour Windows 10. Mais j'ai juste coulé une semaine pour découvrir que le bord saignant tire toujours le sang et n'est pas ramené au niveau de danger du seul bord d'attaque. À ce stade, cela ressemble à encore six mois jusqu'à ce qu'il soit prêt en tant que conducteur quotidien.
Tetsujin no Oni
0

L'exécution de conteneurs Docker entraîne des problèmes de liaison de port ..!

Est-ce une bonne pratique d'exécuter docker dans la machine virtuelle ... L'architecture pour votre référence

Système d'exploitation hôte -> VirtualMachine -> Hyperviseur -> Système d'exploitation serveur -> Docker

Est-ce une bonne pratique .. :)

Manikandan Ram
la source