Contexte
Je rencontre quelque chose d'étrange en intégrant promtail à ma pile
ERREUR: pour asmodius_promtail Impossible de démarrer le service promtail : La création du runtime OCI a échoué : container_linux.go:349: le démarrage du processus du conteneur a provoqué "process_linux.go:449: l'initialisation du conteneur a provoqué \"rootfs_linux.go:58: le montage de \\\"/var/lib/docker/volumes/asmodius_nginx-logs/_data\\\" sur le rootfs \\\"/var/lib/docker/overlay2/f6e22c4d99f1e9907a8ff4b05338386a38b9a7cd802944a877102bb805b97dac/merged\\\" à \\\"/var/lib/docker/overlay2/f6e22c4d99f1e9907a8ff4b05338386a38b9a7cd802944a877102bb805b97dac/merged/var/log/nginx\\\" a provoqué \\\"mkdir /var/lib/docker/overlay2/f6e22c4d99f1e9907a8ff4b05338386a38b9a7cd802944a877102bb805b97dac/merged/var/log/nginx: système de fichiers en lecture seule\\\"\"": inconnu
Le volume mentionné dans cette erreur est celui que j'utilise pour que promtail puisse lire les journaux Nginx. (Il lit uniquement les fichiers et n'a pas besoin d'écrire dans le répertoire) Voici une partie du fichier docker-compose.yml
version: '3.7'
services:
nginx:
container_name: ${SERVER_NAME}_nginx
restart: always
networks:
- monitoring
- web
image: nginx:1.17.5-alpine
entrypoint: /entrypoint.sh
ports:
- 80:80
- 443:443
volumes:
- ./nginx/site.conf:/etc/nginx/conf.d/site.conf
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/entrypoint.sh:/entrypoint.sh
- nginx-logs:/var/log/nginx
- certificates:/etc/letsencrypt/
promtail:
restart: always
container_name: ${SERVER_NAME}_promtail
image: grafana/promtail:master-b652f0a
command: -config.file=/etc/promtail/docker-config.yaml
volumes:
- nginx-logs:/var/log/nginx
- /var/log:/var/log:ro
- ./promtail/docker-config.yaml:/etc/promtail/docker-config.yaml:ro
networks:
- monitoring
et le volume "inspection"
{
"CreatedAt": "2020-04-28T20:08:41Z",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "asmodius",
"com.docker.compose.version": "1.24.1",
"com.docker.compose.volume": "nginx-logs"
},
"Mountpoint": "/var/lib/docker/volumes/asmodius_nginx-logs/_data",
"Name": "asmodius_nginx-logs",
"Options": null,
"Scope": "local"
}
Étrangement, le même fichier docker-compose.yml
fonctionne parfaitement sur mon Debian 9
- Version de Docker 19.03.8, build afacb8b7f0
- Version de docker-compose 1.22.0, build f46880fe
mais échoue sur CentOS
- Version de Docker 19.03.8, build afacb8b
- Version de docker-compose 1.24.1, build 4667896b
Pistes
Je ne pense pas que la version de docker-compose puisse être le problème. J'ai essayé les actions suivantes
- arrêter l'ensemble de la pile, rm le volume
nginx-logs
et redémarrer - utiliser
:ro
ne pas utiliser:ro
Questions
Comme je ne comprends pas entièrement le message d'ERREUR
, une explication des éléments suivants pourrait m'aider à comprendre ce que je fais mal.
système de fichiers en lecture seule\\\"\"": inconnu
: Je ne comprends pas ce que"\"
représente- pourquoi mentionne-t-il un
merge
? Un merge avec quoi? mkdir
.... donc il tente de créer un dossier quelque part dans/var/lib/docker
. Mais pourquoi doit-il le faire pour ce volume spécifique alors que tous les autres (et il y en a beaucoup) réussissent à chaque fois que jedocker-compose up -d --force-recreate
(car c'est ainsi que j'ajoute/mets à jour les services sur cette machine)
Toutes les perspectives sont les bienvenues