MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Docker:thay đổi thư mục nơi lưu trữ khối lượng docker

Các tập đã đặt tên sẽ được lưu trữ bên trong thư mục của docker (/ var / lib / docker). Nếu bạn muốn tạo một ổ đĩa trong một thư mục lưu trữ cụ thể, hãy sử dụng một ổ đĩa lưu trữ theo cú pháp sau:

docker run -v /home/ubuntu/data/app-data:/app-data my-image

Hoặc từ tệp soạn thảo của bạn:

version: '2'
services:
    mongo:
        container_name: "CaseBook-db"
        restart: always
        image: mongo:3.2.7
        ports:
            - "27017"
        volumes:
            - /home/ubuntu/data/db:/data/db
        labels:
            - "ENVIRONMENT_TYPE=meteor"

    app:
        container_name: "CaseBook-app"
        restart: always
        image: "meteor/casebook"
        build: .
        depends_on:
            - mongo
        environment:
            - MONGO_URL=mongodb://mongo:27017/CaseBook
        ports:
            - "80:3000"
        volumes:
            - /home/ubuntu/data/uploads:/Meteor-CaseBook-Container/.uploads
        labels:
            - "ENVIRONMENT_TYPE=meteor"

Với ổ đĩa lưu trữ, mọi nội dung của ổ đĩa bên trong hình ảnh sẽ được phủ lên với nội dung chính xác của thư mục máy chủ lưu trữ, bao gồm cả UID của thư mục máy chủ lưu trữ. Một thư mục máy chủ lưu trữ trống không được khởi tạo từ hình ảnh như cách một ổ đĩa trống có tên. Ánh xạ UID có xu hướng là phần khó khăn nhất khi sử dụng khối lượng máy chủ.

Chỉnh sửa:từ các nhận xét bên dưới, nếu bạn cần một khối lượng được đặt tên hoạt động như một khối lượng lưu trữ, có một plugin khối lượng liên tục cục bộ được liệt kê trong danh sách plugin của docker. Sau khi cài đặt plugin, bạn có thể tạo các ổ trỏ đến các thư mục lưu trữ, với tính năng mà ngay cả sau khi xóa ổ đã đặt tên, thư mục lưu trữ vẫn bị bỏ lại. Cách sử dụng mẫu từ plugin bao gồm:

docker volume create -d local-persist -o mountpoint=/data/images --name=images
docker run -d -v images:/path/to/images/on/one/ one
docker run -d -v images:/path/to/images/on/two/ two

Chúng cũng bao gồm tệp soạn v2 với ví dụ về khối lượng sau:

volumes:
  data:
    driver: local-persist
    driver_opts:
      mountpoint: /data/local-persist/data

Một tùy chọn bổ sung mà tôi đã biết trong tháng qua là sử dụng các tùy chọn gắn kết của trình điều khiển khối lượng cục bộ để tạo một liên kết liên kết theo cách thủ công. Điều này tương tự với khối lượng máy chủ lưu trữ trong docker với những điểm khác biệt sau:

  • Nếu thư mục không tồn tại, việc cố gắng khởi động vùng chứa với một ổ đĩa đã đặt tên trỏ đến một liên kết ràng buộc sẽ không thành công. Với khối lượng máy chủ lưu trữ, docker sẽ khởi tạo nó vào một thư mục trống do root sở hữu.
  • Nếu thư mục trống, một ổ đĩa được đặt tên sẽ khởi tạo mount liên kết với nội dung của hình ảnh tại vị trí mount, bao gồm quyền / quyền sở hữu tệp và thư mục. Với khối lượng máy chủ lưu trữ, không có quá trình khởi tạo nội dung thư mục máy chủ lưu trữ.

Để tạo một ổ đĩa được đặt tên dưới dạng gắn kết ràng buộc, bạn có thể tạo trước nó bằng:

docker volume create --driver local \
  --opt type=none \
  --opt device=/home/user/test \
  --opt o=bind \
  test_vol

Từ một docker run , điều này có thể được thực hiện với --mount :

docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/home/user/test \
    foo

Hoặc trong tệp soạn thư, bạn có thể tạo ổ đĩa được đặt tên bằng:

volumes:
  data:
    driver: local
    driver_opts:
      type: none
      o: bind 
      device: /home/user/test 

Sở thích của tôi là sử dụng ổ đĩa đã đặt tên với trình điều khiển cục bộ thay vì trình điều khiển bên thứ ba cố định cục bộ nếu bạn cần các tính năng âm lượng đã đặt tên.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ vòng

  2. Lưu trữ các cấu trúc lồng nhau với mgo

  3. Phương thức Meteor so với quy tắc từ chối / cho phép

  4. MongoDB $ nhân

  5. Cách lấy lại tài liệu Gốc sau khi tổng hợp