Sweetohm

Michel Casabianca


Pour la première fois depuis des années, j’ai eu une erreur suite à une mise à jour de mes machines Debian…

En mettant à jour mes machines sous Debian 11.6 j’ai eu récemment l’erreur suivante :

Paramétrage de docker-ce (5:23.0.0-1~debian.11~bullseye) ...
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
invoke-rc.d: initscript docker, action "restart" failed.
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Tue 2023-02-07 10:05:22 UTC; 35ms ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
    Process: 136403 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
   Main PID: 136403 (code=exited, status=1/FAILURE)
        CPU: 395ms

févr. 07 10:05:24 legolas systemd[1]: docker.service: Scheduled restart job, restart counter is at 1.
févr. 07 10:05:24 legolas systemd[1]: Stopped Docker Application Container Engine.
févr. 07 10:05:24 legolas systemd[1]: Starting Docker Application Container Engine...
févr. 07 10:05:24 legolas dockerd[136413]: unable to configure the Docker daemon with file /etc/docker/daemon.json: merged configuration validation from file and command line flags failed: the "graph" config file option is deprecated; use "data-root" instead
févr. 07 10:05:24 legolas systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
févr. 07 10:05:24 legolas systemd[1]: docker.service: Failed with result 'exit-code'.
févr. 07 10:05:24 legolas systemd[1]: Failed to start Docker Application Container Engine.
dpkg: erreur de traitement du paquet docker-ce (--configure) :
 installed docker-ce package post-installation script subprocess returned error exit status 1

Stupeur ! Cela ne m’étais pas arrivé depuis… en fait je ne m’en souviens plus tellement c’est lointain. Debian n’est pas responsable, il faut plutôt blâmer Docker car j’ai ajouté leur repository à ma liste des sources (dans le fichier /etc/apt/sources.list.d/docker.list).

Restait maintenant à faire très vite machine arrière. Sauf que vu qu’une telle erreur ne m’étais pas arrivé depuis la nuit des temps, je ne savais plus comment faire. Après quelques recherches fébriles, j’ai trouvé la procédure que je détaille ici.

Il faut commencer par lister les mise à jour faites avec :

$ sudo view /var/log/apt/history.log
Start-Date: 2023-02-05  10:45:57
Commandline: apt full-upgrade
Requested-By: casa (1001)
Install: docker-compose-plugin:amd64 (2.15.1-1~debian.11~bullseye, automatic), docker-buildx-plugin:amd64 (0.10.2-1~debian.11~bullseye, automatic)
Upgrade: docker-ce-cli:amd64 (5:20.10.23~3-0~debian-bullseye, 5:23.0.0-1~debian.11~bullseye), docker-ce:amd64 (5:20.10.23~3-0~debian-bullseye, 5:23.0.0-1~debian.11~bullseye), docker-ce-rootless-extras:amd64 (5:20.10.23~3-0~debian-bullseye, 5:23.0.0-1~debian.11~bullseye)
Error: Sub-process /usr/bin/dpkg returned an error code (1)
End-Date: 2023-02-05  10:46:53

On pourra ensuite revenir en arrière avec les commandes :

$ export VERSION=5:20.10.23~3-0~debian-bullseye
$ sudo apt install docker-ce=$VERSION docker-ce-cli=$VERSION docker-ce-rootless-extras=$VERSION

Les anciennes versions des paquets sont installées et le problème corrigé !

Mais ce n’est pas terminé car il faut maintenant bloquer la version de ces packages en attendant que le problème soit corrigé :

$ sudo apt-mark hold docker-ce docker-ce-cli docker-ce-rootless-extras

Lorsque le problème sera corrigé, on pourra enlever les blocages avec :

$ sudo apt-mark unhold docker-ce docker-ce-cli docker-ce-rootless-extras

On peut lister les blocages avec :

$ sudo apt-mark showhold

Tout est de nouveau fonctionnel, mais je me pose la question du sérieux des mainteneurs du package Docker, ce petit outil confidentiel, pour ce système peu utilisé qu’est Debian…

Enjoy!