1 votes

Docker volume erreur système de fichiers en lecture seule\\\"\"": inconnu

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 je docker-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

2voto

BMitch Points 4794
mkdir /var/lib/docker/overlay2/f6e22c4d99f1e9907a8ff4b05338386a38b9a7cd802944a877102bb805b97dac/merged/var/log/nginx: système de fichiers en lecture seule\\\"\"

Cela signifie qu'il ne peut pas créer un répertoire sous /var/lib/docker. Aucun de ces systèmes de fichiers ne devrait être en lecture seule. Peut-être que vous n'avez pas démarré le moteur Docker en tant que root, ou peut-être qu'il y a quelque chose de mal avec le système de fichiers lui-même. Je vérifierais que vous n'avez pas manqué de capacité, que ce soit en octets libres ou en inodes libres, avec :

df /var/lib/docker/.
df -i /var/lib/docker/.

Si vous utilisez Docker Desktop, alors en dernier recours, détruisez et recréez la machine virtuelle docker. Cela entraînera la perte de toutes les données de volume, des images construites, des conteneurs en cours d'exécution, etc, alors sauvegardez ce que vous voulez sauvegarder.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X