Fedora, de Docker à Moby

Publié le 07/04/2019
thumbnail for this post

Si vous êtes utilisateur de Docker sur Fedora 29, vous avez certainement installé le paquet “docker” des dépôts officiels, ou “docker-ce” des dépôts Docker. Sauf que les paquets diffèrent drastiquement en terme de version. Alors on va parler de Moby.

TL;DR

Pour résumer, à ceux qui n’ont pas envie de lire tout le billet, la version sans marque de Docker-CE existe dans les dépôts officiels de Fedora sous le nom “moby-engine”. Pour l’installer:

sudo systemctl stop docker
sudo dnf remove docker docker-ce
# si vous avez installé les dépôts Docker, vous pouvez les supprimer
# dans le répertoire /etc/yum.repos.d/
# puis:
sudo dnf install moby-engine
sudo systemctl start docker

Et vous voilà avec une version de docker à jour, gérée par la communauté Fedora.

Moby ?

Quand on parle de Docker, on ne sait pas vraiment de quoi on parle… Parlons-nous du client, des conteneurs, du services, de ses commandes pour démarrer et gérer des conteneurs? On en oublie que Docker est un produit assez large, géré par une entreprise du même nom, qui propose une version “CE” (Community Edition) et une version “Entreprise” (EE).

Sur Fedora, on retrouve une paquet un peu ancien, nommé “docker”, mais à quoi fait-il référence ?

Le fait est que certaines distributions tiennent à garder une certaine cohérence en tereme de licence et de respect de la philosophie “libre”. Donc la préférence va généralement se porter sur la version la plus “libre” et la moins soumise à des droits pouvant porter préjudice aux projets “vraiment libres”. Mais alors que peut-il se passer avec Docker ?

Et bien sur Fedora, ça pose un léger problème. Docker-CE est “brandé” (terme angliciste qui veut dire, en gros, que nous parlons d’une marque, et non d’une technologie). En soit ce n’est pas si grave, mais dans les fats il existe depuis 2017 une séparation de projet. En effet, il y a “Moby”, et “Docker” – bien que liés, il y a une différence en terme de “marque”.

Bon, OK, et du coup c’est quoi Moby ?

Moby a été lancé à l’initiative de Docker en 2017, c’est un projet de “kit” permettant de construire une solution de conteneurisation standardisée sur laquelle Docker lui-même repose.

Solomon Hykes, le créateur et gérant du projet Docker en parle dans un de ses tweets:

On ne va pas en faire des caisses, disons simplement que Moby est la base du projet, et que Docker est un produit constuit à base de Moby. Si je devais vous expliquer tout ce qu’impliquent Docker, Moby, et les “sous-projets” que sont “runC”, CRI etc… on y passerait des pages entières, et vous ne serez pas plus avancés.

Revenons à Fedora et les paquets “docker”

Depuis des mois, voir des années, j’utilise le paquet “docker” fourni dans les dépôts Fedora. Et comme mon collègue, Daniel, me l’a fait remarqué, ce paquet semble bloqué à la version 1.13 – alors que la version “docker-ce” proposé par Docker est en version 1.18 depuis… des mois.

Donc, j’ai deux choix:

  • utiliser un paquet officiel Fedora
  • utiliser un paquet officiel Docker

Dans le premier cas, j’évite l’installation d’un dépôt tiers, mais (vous allez comprendre juste après) je me retrouve avec une version très en retard de Docker. Et dans le second cas, je suis à jour, mais j’ai moins confiance. C’est un dépôt tiers qui n’est pas géré par la communauté – mais j’ai une version à jour. Bref, le choix est rude. Sauf que…

En parlant sur IRC avec Kwizart (décidément il est une source d’infos importante pour moi), j’apprend qu’un paquet nommé “moby-engine” existe sur les dépôts, alors que le paquet “docker” est en cours d’abandon. Et ce paquet, vous l’avez compris, part du projet Moby (capt’ain Obious merci), et propose une version à jour.

L’idée est qu’en partant de Moby, on évite de nommer le paquet avec le nom de la marque, mais on peut tout de même utiliser le mot “docker” pour les commandes et le service. Ça semble bon.

Et donc, j’ai testé.

On essaye

Allez, ça coûte rien d’essayer, de toutes manières mes conteneurs sont “jetables” (c’est le but des conteneurs je vous le rappelle) et je peux parfaitement revenir à un état antérieur grâce à “dnf history”.

On vire docker, point barre:

sudo systemctl stop docker
sudo dnf remove docker docker-ce

Voilà, c’est fait. Reste à installer “Moby-engine”:

sudo dnf install moby-engine

Et là, pas de panique, ce paquet propose les mêmes outils et commandes docker – donc vous allez retrouver le service “docker” (et “dockerd”) et la commande du même nom.

sudo systemctl start docker
docker version
Client:
 Version:           18.06.0-dev
 API version:       1.38
 Go version:        go1.11.5
 Git commit:        0ffa825
 Built:             Mon Feb 11 14:47:59 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          dev
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.11.5
  Git commit:       0ffa825
  Built:            Mon Feb 11 14:47:26 2019
  OS/Arch:          linux/amd64
  Experimental:     false

Et oui, la version colle bien à “docker-ce”, mais je n’ai pas eu besoin des dépôts Docker, tout est bien dans les dépôts officiels de Fedora.

Et voilà une raison de plus qui me fait préférer Fedora aux autres distributions: j’évite de prendre des dépôts externes et je reste en confiance.

Pour information, mes anciens conteneurs fonctionnent toujours, mes images sont encore là, rien n’a vraiment bougé à part le fait que je suis mainenant en train d’utiliser une version récente de Docker.

Un souci ?

Il se peut que vous ayez un souci, honnêtement rien n’est jamais parfait, et sur un de mes postes j’ai eu un tout petit problème à régler.

Dans mon cas, je mets à jour Fedora sur un poste depuis la version 25 je crois, et sans réinstallation. Depuis cette date, j’ai beaucoup manipulé les installations de Docker et j’avais utilisé “devicemapper” des années auparavent. Puis je suis passé à Overlay2, sans jamais avoir supprimé le répertoire de volumes et conteneurs. Pour la version 1.13 de Docker, il n’y avait pas de souci, mais là… En passant à Moby-Engine, j’ai eu une erreur.

En regardant les logs (via journalctl), j’ai vu qu’il n’aimait pas le fait d’avoir plusieurs possibilités de pilotes de volumes d’écritures. Il m’a suffit de supprimer le répertoire /var/lib/docker/devicemapper pour que ça passe.

Si vous avez des soucis, je serai heureux que vous commentiez et j’ajouterai les solutions dans ce billet.

Pour conlure

Je n’ai rien contre l’entreprise Docker, bien au contraire je respecte le travail de fait et leur ouverture à un produit qui est, aujourd’hui, majeur. Je ne cherchais pas à m’écarter de l’entreprise mais je voulais vraiment avoir un paquet récent de Docker depuis les dépôts Fedora. Je comprends que le nom du paquet puisse limiter sa reconnaissance (et c’est pour cela que j’en parle dans ce billet) – mais si vous êtes utilisateur de Fedora, je vous conseille de passer à “moby-engine”. Cela ne vous changera rien en soit, ce sera bien Docker-CE, vous aurez les mêmes outils, etc. Mais sans utiliser un dépôt tiers, et surtout en restant à jour.

Le projet Moby est une initiative qui me plait énormément. J’applaudie Docker d’en être l’initiateur et de respecter l’ouverture d’esprit propre à la philosophie du libre.

Pour en savoir plus sur Moby:

comments powered by Disqus