2017-03-08 89 views
3

我在Docker Swarm的不同節點上運行的Docker容器之間共享文件夾時出現問題。我的團隊由一名經理和兩名工人組成。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將文件添加到此文件夾時,第二個容器看不到創建的文件。

如何配置swarm使文件在兩個容器中都可見?

+0

我發現這篇文章:也許它會很有用:https://ender74.github.io/Sharing-Volumes-With-Docker-Swarm/。我不知道它是這樣工作的,因爲有人回答 - 可能需要插件才能實現您的目標。 – barat

回答

15

通過默認驅動程序在Docker羣中創建的卷對於節點是本地的。因此,如果您將兩個容器放在同一個主機上,它們將具有共享卷。但是當您將容器放在不同的節點上時,每個節點上都會創建一個單獨的卷。

現在爲了實現綁定安裝/跨多個節點的卷你有這些選項:

  1. 使用集羣文件系統一樣glusterfs,頭孢和...跨羣節點,然後使用綁定安裝在您的指向共享fs的服務防禦。

  2. 提供給其提供共享存儲像flocker搬運工的許多存儲驅動程序的使用一個,...

  3. 轉爲Kubernetes和使用經由存儲類和權利要求多個後端利用自動卷供應的。

更新:由於@Krishna在評論中指出Flocker已關閉並沒有在github repo很多活動。

+5

Flocker已經[關閉](https://clusterhq.com/2016/12/22/clusterf-ed/),並且[github回購](https:// github。)上沒有太多活動。 COM/ClusterHQ/flocker)。 – Krishna