Eh oui, boot2docker, c’est fini. C’était sympa, tu m’as permis d’utiliser Docker là où ce n’était pas permis. Mais maintenant, tu dois laisser ta place à Docker Machine. Voilà, c’est fini. Ne sois jamais amère, reste toujours sincère. T’as eu c’que t’as voulu, même si t’as pas voulu c’que t’as eu.

Docker ne fonctionne nativement que sur Linux (du moins pour l’instant). Pour être plus précis, Docker fonctionne sur un modèle client-serveur où l’outil de commande (client) marche sous Linux, Windows et MacOS et le démon (serveur) ne fonctionne que sous Linux. Donc pour l’utiliser sur MacOS, ou d’autres systèmes encore plus exotiques, il faut installer ce démon dans une machine virtuelle.

mac docker host

C’est ce que fait boot2docker. L’outil nous télécharge une machine virtuelle VirtualBox légère, qui embarque le démon docker. Il nous permet de la piloter cette VM, essentiellement pour la démarrer et l’arrêter. Sur MacOS, on peut télécharger l'installer de boot2docker et l’installer manuellement, ou passer par Homebrew.

brew install docker
brew install boot2docker

Mais ça, c’était avant.

Aujourd’hui, boot2docker est déprécié, au profit de Docker Machine.

docker machine

Le but de Docker Machine est plus vaste que boot2docker. Il est là pour installer Docker sur une machine distante et configurer notre client pour qu’il y accède. Par machine distante, on entend chez un des prestataires cloud supportés (Amazon AWS, Google Compute Engine, Digital Ocean,…​) ou sur un moteur de virtualisation supporté (VirtualBox, VMware Fusion,…​). Docker Machine avec son driver VirtualBox remplace donc boot2docker.

Là aussi, il y a deux façons de l’installer. La documentation officielle préconise d’utiliser la Docker Toolbox, qui contient aussi Docker, Docker Compose et Kitematic. Personnellement, je reste fidèle à Homebrew.

brew install docker-machine

En écoutant les Cast Codeurs, j’ai découvert que Docker Toolbox était disponible avec Homebrew Cask :

brew cask install dockertoolbox

Une fois que tout est installé, je peux créer ma VM.

docker-machine create -d virtualbox docker-vm
eval "$(docker-machine env docker-vm)"

Oui, mais si vous avez bien suivi, avant j’avais boot2docker, pour lequel j’avais déjà une VM avec plein d’images. Ce serait donc bien de récupérer tout ça. Et bien c’est prévu dans Docker Machine.

docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm
eval "$(docker-machine env boot2docker-vm)"

Les commandes ont un peu changé, au lieu de up et down, on a start et stop, ce qui est plus cohérent avec les commandes Docker.

docker-machine start
docker-machine stop

Il ne me reste plus qu’à désinstaller boot2docker.

boot2docker destroy
brew remove boot2docker

C’est fini…​hum, c’est fini…​