次のdocker-composeをdocker swarm clusterにデプロイしようとしています。
version: '3.2'
services:
jenkins:
image: jenkins/jenkins:lts
ports:
- 8080:8080
volumes:
- ./data_jenkins:/var/jenkins_home
deploy:
mode: replicated
replicas: 1
data_jenkinsはdocker-composeと同じ場所にあり、そのパスをvolumeとして渡します。しかし、なぜそれがソースパスを投げることが存在しないのですか?正確には何が問題ですか。
また、ディレクトリが存在しない場合は、-vで正しく作成されているはずです。なぜそうではないのですか?
これは Docker Swarm BIND MOUNTS に明確に文書化されています
ホストパスをサービスのコンテナーにバインドマウントする場合、パスはすべてのSwarmノードに存在する必要があります。 Dockerスウォームモードスケジューラは、リソースの可用性の要件を満たし、指定したすべての制約と配置設定を満たすすべてのマシンでコンテナをスケジュールできます。
単一のコンテナーを実行する場合とは異なり、バインドマウントホストディレクトリは、存在しない場合は作成されません。クラスターノードでコンテナーを実行する前に存在する必要があります。