Installation du moteur et du client Docker

Voici le second d’une série d’articles consacrée à l'utilisation conjointe de Docker et Azure qui je l’espère vous permettra d’accélérer votre découverte de ces environnements :
Docker : les fondamentaux
Mise en place de l’environnement Docker : Installation du moteur et du client DockerDocker et la virtualisation par container sous Windows
Mise en place de l’environnement Docker : Provisioning d’un host Docker dans Azure
Utilisation de Docker
Clusters de containers Docker

La mise en place du moteur Docker requiert l’installation du moteur Docker, du client Docker et l’hébergement et le provisioning du serveur hôte exécutant le moteur Docker.

Installation du moteur Docker

Historiquement, le moteur de Docker a été conçu pour utiliser des fonctionnalités spécifiques aux containers LXC : il ne s’exécutait donc que dans un environnement Linux. Lors de la Build 2015 sera démontré le support de Docker par Windows 10 Server (nous reviendrons ultérieurement sur ce point).

Installation du moteur Docker sur Linux

Pour installer l’environnement Docker sur une machine Linux, on peut faire usage de l’ « advanced packaging tool » pour déclencher le déploiement avec la commande suivante (cf « Create a Docker Host on Microsoft Azure ») :

sudo apt-get install docker.io

Mais pour être sûr de disposer de la dernière version, il est préférable de la télécharger directement depuis le référentiel Docker.

wget -qO- https://get.docker.com/ | sh

Installation du moteur Docker sur d’autres environnements

Une des façons de disposer du moteur Docker sous Mac ou sous Windows est d’utiliser l’application appelée Boot2Docker pour installer une machine virtuelle hébergeant une distribution Linux très légère et exécutant le daemon de Docker. Par défaut cette machine virtuelle est hébergée sous VirtualBox.

Installation de BootDocker sur Mac

Docker met également à disposition un programme d’installation de Boot2Docker qui installe le client Docker. Il suffit de double-clicker sur le package Boot2Docker-x.x.x.pkg. L’installation ajoute Boot2Docker au dossier « Applications ». Les binaires « docker » et « boot2docker » sont copiés dans le répertoire /usr/local/bin directory.

Installation de Boot2Docker sur Windows

Docker met à disposition un programme d’installation pour Windows qui installe le client Docker pour Windows, VirtualBox, Git for Windows (MSYS-git), l’ISO Linux boot2docker Linux et l’outil d’administration Boot2Docker. Le script de démarrage Boot2Docker permet alors de lancer un shell Unix déjà configuré pour gérer Docker au sein d’une machine virtuelle.

Dans le cas de Windows, il est également possible de déployer une image Boot2Docker au format Hyper-V, notamment en utilisant DockerMachine, un outil Docker dont je vous reparlerai prochainement.

Installation du client Docker

Le client Docker est présent sur les machines Linux sur lesquelles l’environnement Docker est installé. Mais le client qui interagit avec le moteur de Docker n’est pas fondamentalement dépendant de Linux. Son rôle est uniquement de contrôler le moteur pour créer des images, les publier, puis les exécuter et gérer les containers correspondant à l’instanciation de ces images. Rien n’empêche donc de le mettre à disposition des utilisateurs d’autres environnements (comme Mac ou Windows) afin qu’ils puissent utiliser l'interface Docker standard pour manipuler containers et images sur leurs environnements de développement Linux.

Installation du client Docker sur Mac

La documentation officielle pour l’installation de Docker sur Mac propose d’installer Boot2Docker (et d’exécuter le client Docker au sein de la VM Boot2Docker. Ce n’est pas la seule option). Il est en effet possible de ne mettre à disposition que le client Docker. Pour se faire, on peut s’appuyer sur l’utilitaire Homebrew, un fort efficace package manager pour OS X. L’installation d’« Homebrew » peut se faire avec le script suivant :

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

D’autres mécanismes d’installation d’« Homebrew » sont proposés sur Github.

L’installation du client Docker sur Mac peut alors être réalisée par l’appel des commandes suivantes :

brew update

brew search docker

brew Install docker

Installation du client Docker sur Windows

Le code source du client Windows pour Docker publié sur GitHub est fourni avec différents scripts de pré ou post-compilation qui supposent un environnement de type Linux et la présence du langage de programmation Open Source baptisé « Go ». Le langage Go propose un programme d’installation MSI disponible pour Windows 32 et 64 bits.

Restait donc à lever la difficulté liée aux scripts précédemment évoqués. Plutôt que de porter l’ensemble de ces scripts pour une exécution Windows, l’approche retenue par Ahmet Alp Balkan a consisté à réaliser une opération dite de « cross-compilation » sur la base d’une « pull request » GitHub, en exécutant ces scripts dans un sous-système Unix de Windows (SUA : Subsystem for Unix-based Application). En général, les opérations de « cross-compilation » sous Windows se fondent sur l’utilisation des projets Open Source comme Mingw64 ou Cygwin.

Dans notre contexte, « Git for Windows » propose un shell Unix suffisant pour réaliser cette compilation avec l’aide de l’environnement « Go ».

Pour obtenir une version à jour du client Docker pour Windows, on peut donc de lancer le script suivant depuis le shell « Git Bash » :

git clone --depth 1 https://github.com/docker/docker.git /c/users/stephgou/src/github.com/docker/docker

cd /c/users/stephgou/src/github.com/docker/docker

export GOPATH=/c/users/stephgou:/c/users/stephgou/src/github.com/docker/docker/vendor

export DOCKER_CLIENTONLY=1

chmod +x hack/make/.go-autogen && hack/make/.go-autogen

cd docker

go build

Docker-Windows

Une approche similaire à celle de l’installation du client Docker sur Mac existe également sur Windows avec PowerShell OneGet. Il s’agit d’une technologie dont l’objectif est de simplifier considérablement la découverte et l’installation de logiciel sur les machines Windows.
Avec OneGet, il est possible de :
• Gérer une liste de dépôts de logiciels dans lequel les packages logiciels peuvent être recherchés, acquis et installés
• Installer et désinstaller silencieusement des packages d'un ou plusieurs référentiels avec une seule commande PowerShell
OneGet fonctionne avec le référentiel communautaire « Chocolatey » qui recense plus de 1 700 logiciels uniques. La prise en charge de dépôts supplémentaires sera proposée dans des versions ultérieures.
Pour l’utiliser, il suffit d’importer le module OneGet dans PowerShell.

Import-Module -Name OneGet

On peut alors faire usage des commandes OneGet suivantes pour installer le client Docker.

Chocolatey

Dans le prochain article nous verrons les multiples solutions proposes pour le provisioning de serveurs Hôte Docker sur la plateforme Azure.