Mon installation Docker a échoué lorsque j’ai tenté de mettre à jour le gestionnaire Docker via l’interface web. Je sais que mon installation Docker est cassée car j’ai suivi la recommandation de Sam et obtenu ceci :
$ docker run -it --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
Status: Downloaded newer image for hello-world:latest
docker: Error response from daemon: no status provided on response: unknown.
ERRO[0003] error waiting for container: context canceled
J’ai ensuite trouvé cette issue GitHub qui semble correspondre à ce que je constate :
Puisque je suis sous Ubuntu 16.04, il semble que cela soit la solution :
Ajouter un dépôt deb :
sudo add-apt-repository 'deb http://security.ubuntu.com/ubuntu xenial-security main universe'
Installer runc (notez les ~, GitHub les a mal interprétés dans le message original de @vietthang207) :
L’installation de runc provoque la suppression de docker-ce, d’où la nécessité de le réinstaller :
sudo apt-get install docker-ce
Quelqu’un pourrait-il confirmer que c’est sans risque ou quelles en seront les conséquences ? J’ai un peu peur que cela ne désinstalle Docker. Je suppose que cela signifie que mon site sera hors ligne pendant le processus (étrangement, il est actuellement toujours en ligne et fonctionnel, malgré le fait que Docker soit cassé). Mais mon installation Discourse est-elle sûre ou mes conteneurs vont-ils également disparaître ?
Édition : Voici jusqu’où j’ai osé aller :
$ sudo apt-get install runc=1.0.0~rc7+git20190403.029124da-0ubuntu1~16.04.4
[sudo] password for christoph:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
aufs-tools cgroupfs-mount docker-ce-cli libltdl7
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
containerd.io docker-ce
The following NEW packages will be installed:
runc
0 upgraded, 1 newly installed, 2 to remove and 21 not upgraded.
1 not fully installed or removed.
Need to get 1,890 kB of archives.
After this operation, 192 MB disk space will be freed.
Do you want to continue? [Y/n] n
Abort.
$
Avez-vous redémarré ? J’ai rencontré des problèmes avec Docker si j’ai effectué une mise à niveau sans redémarrage.
Oui. Cela fait peur. Je sais que j’ai des sites sous 16.04 et que je n’ai rien fait avec runc.
Si vous êtes préoccupé par les temps d’arrêt et que vous êtes sur Digital Ocean, vous pourriez simplement :
Créer un nouveau droplet avec 18.04 et effectuer une installation propre.
Obtenir une adresse IP flottante, la pointer vers l’ancien serveur, puis mettre à jour le DNS.
Mettre l’ancien forum en mode lecture seule.
Effectuer une sauvegarde.
Restaurer sur le nouveau serveur.
Repointer l’adresse IP flottante vers le nouveau serveur.
Vous n’aurez aucun temps d’arrêt, seulement le temps de lecture seule nécessaire pour la sauvegarde et la restauration. Vous pouvez vous entraîner une ou deux fois avant de passer en mode lecture seule. Vous pourriez également utiliser rsync pour transférer les fichiers uploadés plutôt que de les inclure dans la sauvegarde, ce qui vous obligerait à sauvegarder et restaurer uniquement la base de données.
Vous voudrez probablement également transférer vos certificats Let’s Encrypt existants, sinon, je pense, vous devrez les reconstruire pour les obtenir.
J’y avais pensé, mais j’ai décidé de ne pas le faire, car je pensais que, puisque mon installation Docker semble être cassée mais que mon forum fonctionne toujours, redémarrer le serveur pourrait aussi casser le forum. Quelles sont les chances ? Devrais-je essayer de redémarrer ?
Merci pour votre explication sur la minimisation des temps d’arrêt. Mais non, je ne suis pas sur DO. Cependant, les temps d’arrêt ne sont pas du tout un problème tant que je sais qu’ils ne dureront pas plusieurs heures ou jours.
Si vous avez mis à jour Docker, qu’il est toujours installé et que ce problème est apparu lors de la mise à jour, alors je suis presque certain que le redémarrage résoudra votre problème. Remarque : Les conseils gratuits valent ce que vous payez pour eux.
Faites une sauvegarde avant de redémarrer. Dans le pire des cas, avec une sauvegarde et votre fichier app.yml, vous pouvez lancer un nouveau serveur et repartir de zéro en moins d’une heure (sauf si vous avez des dizaines de Go de données, peut-être).
Mon plan fonctionnerait probablement pour plusieurs services d’hébergement.
Si vous êtes super paranoïaque, vous pourriez lancer un nouveau serveur quelque part et y transférer une sauvegarde, afin que si quelque chose tourne terriblement mal, vous ayez un plan de repli.
J’ai alors réalisé que je devais probablement utiliser une commande différente car j’ai des conteneurs séparés pour les données et web_only, donc j’ai essayé ./launcher bootstrap web_only, mais cela m’a donné la même erreur.
Je pense que je vais essayer de redémarrer ce week-end, quand j’aurai le temps de résoudre d’éventuels problèmes suivants. Parce que : non, bien que j’aie configuré trois instances Discourse il y a plusieurs années, « lancer un nouveau serveur et repartir de zéro » me occuperait probablement toute une journée. Pointer mon domaine vers la nouvelle adresse IP serait déjà un cauchemar à accomplir. Ou peut-être pas, mais découvrir ensuite que ce n’est pas si grave prendrait aussi du temps…
Eh bien, puisque j’ai passé des centaines d’heures (beaucoup plus de temps que si j’avais simplement effectué des « installations artisanales » fournies par mon prédécesseur), si vous savez configurer le DNS, mes installations sont entièrement automatisées et prennent moins d’une heure (la majeure partie du temps étant consacrée à la propagation du DNS).