web-dev-qa-db-fra.com

Obtention d'une configuration de montage non valide pour le type "bind": le chemin source de la liaison n'existe pas dans le docker

J'essaie de déployer le docker-compose suivant dans le cluster swarm de docker.

version: '3.2'
services:
  jenkins:
    image: jenkins/jenkins:lts
    ports:
      - 8080:8080
    volumes:
      - ./data_jenkins:/var/jenkins_home
    deploy:
      mode: replicated
      replicas: 1

J'ai le data_jenkins aux mêmes endroits où docker-compose est et passe ce chemin comme volume. Mais pourquoi jette-t-il le chemin source n'existe pas. Quel est le problème exactement.

De plus, si le répertoire n'existe pas, -v aurait dû le créer correctement. Pourquoi pas?

8
Tara Prasad Gurung

Ceci est clairement documenté dans Docker Swarm BIND MOUNTS

Si vous liez monter un chemin d’hôte dans les conteneurs de votre service, le chemin doit exister sur chaque noeud swarm . Le planificateur du mode Swarm Docker peut planifier des conteneurs sur n'importe quelle machine qui répond aux exigences de disponibilité des ressources et satisfait à toutes les contraintes et préférences de placement que vous spécifiez.

Contrairement à l'exécution d'un seul conteneur, le répertoire hôte de montage par liaison n'est pas créé s'il ne se ferme pas. Il doit exister avant d'exécuter le conteneur sur un nœud de cluster.

16
yamenk