2017-03-08 15 views
3

Docker Swarmの異なるノードで動作するDockerコンテナ間でフォルダを共有する際に問題が発生しています。私の群は1人のマネージャーと2人の労働者で構成されています。Docker Swarmのノード間でボリュームが共有されない

私は、アプリケーションをデプロイするために、このコンファイルを使用しています:

version: '3' 

services: 

    redis: 
    image: 
     redis:latest 
    networks: 
     - default 
    ports: 
     - 6379:6379 
    volumes: 
     - test-volume:/test 
    deploy: 
     replicas: 1 
     update_config: 
     parallelism: 2 
     delay: 10s 
     restart_policy: 
     condition: on-failure 
     placement: 
     constraints: [node.role == manager] 

    logstash: 
    image: docker.elastic.co/logstash/logstash:5.2.2 
    networks: 
     - default 
    volumes: 
     - test-volume:/test 
    deploy: 
     placement: 
     constraints: [node.role == worker] 

networks: 
    default: 
    external: false 

volumes: 
    test-volume: 

私はフォルダが正常にdocker exec _id_ ls /testを使用して、両方の容器に装着されていることを確認することができます。しかし、docker exec _id_ touch /test/fileでこのフォルダにファイルを追加すると、2番目のコンテナには作成されたファイルが表示されません。

ファイルを両方のコンテナに表示するようにスウォームを設定するにはどうすればよいですか?

+0

この記事が見つかりました:多分役立つでしょう:https://ender74.github.io/Sharing-Volumes-With-Docker-Swarm/私はそれがこのように動作し、誰かが答えたときにあなたの目標を達成するためにプラグインが必要になるかもしれないことを知らなかった。 – barat

答えて

15

デフォルトのドライバ経由でdocker swarmで作成されたボリュームは、ノードに対してローカルです。したがって、両方のコンテナを同じホストに置くと、共有ボリュームが作成されます。しかし、コンテナを別のノードに置くと、各ノードに別々のボリュームが作成されます。

  1. その後、あなたにバインドマウントを使用して、群れのノードにわたってglusterfs、CEPHと...のようなクラスタファイルシステムを使用します。

    は今複数のノードにバインドマウント/ボリュームを達成するために、これらのオプションを持っています共有fsを指すサービスのdefenition。

  2. 使用flockerのような共有ストレージを提供するドッキングウィンドウに利用できる多くのストレージドライバのいずれか、Kubernetesに...

  3. スイッチおよびストレージクラスおよび特許請求の範囲を介して複数のバックエンドを使用して自動化されたボリュームのプロビジョニングを活用します。

UPDATE:@Krishnaはコメントで述べたようにFlockerがシャットダウンされたとgithub repo上の活動の多くはありません。

+5

Flockerは[シャットダウンされました](https://clusterhq.com/2016/12/22/clusterf-ed/)であり、[github repo](https:// github。 com/ClusterHQ/flocker)。 – Krishna

関連する問題