Aujourd'hui, lorsque j'ai redémarré le programme Docker, je n'ai pas pu le démarrer. Je n'ai trouvé aucun message d'erreur utile via systemctl status docker et jourctl -xu docker. Je n'ai pas eu d'autre choix que de vérifier /var/log/message et j'ai trouvé le message d'erreur suivant :
Started containerd container runtime
Starting Docker Application Container Engine...
Failed at step LIMITS spawning /usr/bin/containerd: Operation not permitted
containerd.service: main process exited, code=exited, status=205/LIMITS
Unit containerd.service entered failed state.
containerd.service failed.
Les informations les plus critiques sont
Échec à l'étape LIMITS et status=205/LIMITS, deux informations sur les limites.
Processus de solution :
Lorsque je vois le message d'erreur de limites, je me demande si le nombre maximum de fichiers ouverts dans le système ulimits et sysctl.conf n'est pas suffisant. Vérifiez les informations suivantes :
ulimit -n
65535
sysctl -a|grep fs.nr_open
fs.nr_open = 65535
J'ai constaté que ces deux endroits ont été configurés. Vérifiez ensuite le nombre de fichiers qui ont été ouverts cette année-là.
lsof -Ki|wc -l
14138
Il a été constaté que le nombre de fichiers ouverts ne dépassait pas la limite supérieure fixée par le système.
Les internautes de la recherche Baidu ont répondu qu'il existe une configuration dans docker.service et containersd.service qui ne peut pas dépasser la configuration du système
1. Modifier /usr/lib /systemd/system/docker.service
Modifiez
les valeursdes trois options LimitNOFILE, LimitNPROC et LimitCORE par 65535
LimitNOFILE=65535
LimitNPROC=65535
LimitCORE=65535
2. Modifiez /usr/lib/systemd/system/containerd.service
et remplacez les valeurs des trois options LimitNOFILE, LimitNPROC, LimitCORE et TasksMax par 65535.
LimitNOFILE=65535
LimitNPROC=65535
LimitCORE=65535
TasksMax=65535
Rechargez ensuite la configuration systemd et redémarrez Docker.
systemctl daemon-reload
systemctl restart docker