2016-06-01 20 views
5

đây là Docker soạn tập tin của tôiLàm thế nào để chia sẻ các tập tin địa phương để Docker chứa Trong bầy đàn với Docker-soạn

version: '2' 
services: 
demoui: 
    image: demoimage 
    ports: 
    - "80:8000" 
    volumes: 
    - ./democonfig/config.js:/usr/local/tomcat/webapps/demo-ui/config.js 
    - ./logs/demo-ui:/usr/local/tomcat/logs 
    restart: unless-stopped 

tập tin soạn Docker này hoạt động khi tôi còn trong nút duy nhất. Sau khi di chuyển đến docker swarm. Nó không làm việc. Nó ném các lỗi sau

ERROR: for demoui Error response from daemon: rpc error: code = 2 desc = "oci runtime error: could not synchronise with container process: not a directory" 
Traceback (most recent call last): 
    File "<string>", line 3, in <module> 
    File "compose/cli/main.py", line 63, in main 
AttributeError: 'ProjectError' object has no attribute 'msg' 
docker-compose returned -1 

Vì vậy, câu hỏi là

  1. Làm thế nào để chia sẻ tập tin để swarm cụm?

  2. Hoặc bạn cần sao chép tất cả tệp vào hình ảnh và chạy tệp?

  3. Vui lòng chia sẻ một số tài liệu về khối lượng docker với bầy đàn.

Trả lời

1

Lỗi bạn nhận được là do tệp/dirs cho tập của bạn không tồn tại trên các nút bạn đang khởi chạy. Docker (và docker-compose) không có cách nào để sao chép các tệp đó sang các máy chủ khác trong bầy đàn.

Tệp nguồn/dir cần phải có mặt trên tất cả các nút swarm mà bạn muốn chia sẻ tệp cấu hình. Bạn cũng đang sử dụng một đường dẫn phụ thuộc vào ngữ cảnh trong tệp compose của bạn, nó sẽ không nhất quán trên tất cả các nút. Thay vào đó, đây phải là đường dẫn tuyệt đối (ví dụ: /opt/config thay vì ./config hoặc ~/config).

Để khắc phục nhanh, bạn cần phải sao chép tệp cấu hình vào mỗi nút trong cùng một vị trí (tức là/chọn hoặc một số thư mục khác) và sửa đổi tệp soạn thư của bạn để trỏ đến vị trí nhất quán này, ví dụ:

volumes: 
    - /opt/config/config.js:/usr/local/tomcat/webapps/demo-ui/config.js 
    - /opt/logs/demo-ui:/usr/local/tomcat/logs 

dài hạn, bạn có thể đồng bộ hóa các tập tin bằng tay, sử dụng một công cụ như lsyncd để giữ cho chúng được đồng bộ hóa tự động trên các nút, đặt chúng trên một khối tin NFS và gắn kết đó trên mỗi nút, hoặc sử dụng một cái gì đó như glusterfs.

Chỉ cần ghi nhớ thư mục ghi nhật ký, bạn có thể muốn đảm bảo tệp nhật ký của mình không ghi đè nhau để bạn có thể giữ chúng cục bộ hoặc đảm bảo tên tệp nhật ký là duy nhất cho mỗi nút nếu sử dụng chia sẻ lưu trữ.

Các vấn đề liên quan