2017-04-03 22 views
6

Tôi đang cố gắng tìm hiểu trình docker tại thời điểm này và tôi đang nhầm lẫn về nơi dữ liệu thực sự tồn tại.Tìm khối lượng dữ liệu trong Docker

Tôi đang sử dụng Docker cho cửa sổ. (Windows 10)

Trong các tài liệu họ nói rằng chạy Docker kiểm tra trên đối tượng sẽ cung cấp cho bạn nguồn: https://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume

$ docker inspect web 

"Mounts": [ 
    { 
     "Name": "fac362...80535", 
     "Source": "/var/lib/docker/volumes/fac362...80535/_data", 
     "Destination": "/webapp", 
     "Driver": "local", 
     "Mode": "", 
     "RW": true, 
     "Propagation": "" 
    } 
] 

tuy nhiên tôi không thấy điều này, tôi nhận được như sau:

$ docker inspect blog_postgres-data 
[ 
    { 
     "Driver": "local", 
     "Labels": null, 
     "Mountpoint": "/var/lib/docker/volumes/blog_postgres-data/_data", 
     "Name": "blog_postgres-data", 
     "Options": {}, 
     "Scope": "local" 
    } 
] 

Có ai có thể giúp tôi không? Tôi chỉ muốn biết khối lượng dữ liệu thực sự tồn tại ở đâu trên máy chủ của tôi? Nếu vậy làm thế nào tôi có thể nhận được đường dẫn đến nó?

Cảm ơn

Trả lời

8

Thư mục âm lượng của bạn là /var/lib/docker/volumes/blog_postgres-data/_data/var/lib/docker thường được gắn trên C:\Users\Public\Documents\Hyper-V\Virtual hard disks, dù sao bạn có thể kiểm tra bằng cách tìm cài đặt đế cắm.

Bạn có thể tham khảo this docs để biết thông tin về cách chia sẻ ổ đĩa với đế cắm trên cửa sổ.

BTW, Source là vị trí trên máy chủ và Destination là vị trí bên trong container tại đầu ra sau đây:

"Mounts": [ 
{ 
    "Name": "fac362...80535", 
    "Source": "/var/lib/docker/volumes/fac362...80535/_data", 
    "Destination": "/webapp", 
    "Driver": "local", 
    "Mode": "", 
    "RW": true, 
    "Propagation": "" 
} 
] 

================== ================================================== =======

cập nhật để trả lời câu hỏi trong các bình luận:

tò mò chính của tôi ở đây là chia sẻ hình ảnh vv là rất tốt nhưng làm thế nào để chia sẻ dữ liệu của tôi?

Thực tế là volume được thiết kế cho mục đích này (quản lý dữ liệu trong vùng chứa docker), dữ liệu về khối lượng được lưu giữ trên máy chủ FS và hình ảnh. Bạn có thể chia sẻ dữ liệu với khối lượng theo:

  • Núi khối lượng Docker để lưu trữ và tái sử dụng nó

    docker run -v /path/on/host:/path/inside/container image

    Sau đó, tất cả dữ liệu của bạn sẽ tiếp tục tồn tại /path/on/host, bạn có thể sao lưu nó, sao chép nó vào máy khác và chạy lại vùng chứa của bạn với cùng một ổ đĩa.

  • Tạo và gắn kết vùng chứa dữ liệu.

    Tạo nơi chứa dữ liệu: docker create -v /dbdata --name dbstore training/postgres /bin/true Run container khác dựa trên thùng chứa này sử dụng --volumes-from: docker run -d --volumes-from dbstore --name db1 training/postgres, sau đó tất cả dữ liệu được tạo ra bởi db1 ý chí kiên định khối lượng của container dbstore.

Để biết thêm thông tin bạn có thể tham khảo official docs of docker volumes, chỉ cần nói, volumes chỉ là một thư mục trên máy chủ của bạn với tất cả các dữ liệu chứa của bạn, vì vậy bạn có thể sử dụng bất kỳ phương pháp bạn sử dụng trước đó để sao lưu/chia sẻ dữ liệu của bạn.

Tôi có thể đẩy âm lượng đến đế giữa như tôi làm với hình ảnh không?

Không, hình ảnh docker là thứ bạn phân phối, nhưng dữ liệu thì không. Bạn có thể sao lưu/lưu giữ/chia sẻ dữ liệu của mình với bất kỳ phương thức nào bạn thích, nhưng việc đẩy dữ liệu vào trình đăng ký docker để chia sẻ nó không có ý nghĩa gì.

tôi có thể sao lưu không?

Vâng, như được đăng trên :-)

+0

Ok do đó, nguồn '/ var/lib/docker/volumes/blog_postgres-data/_data' là trình gỡ rối VM Linux đang chạy. Sự tò mò chính của tôi ở đây là chia sẻ hình ảnh, vv là tuyệt vời nhưng làm cách nào để chia sẻ dữ liệu của tôi? thế nào tôi có thể đẩy một khối lượng đến docker-hub như tôi làm với hình ảnh? tôi có thể tạo bản sao lưu không? – Brad

+0

@ Brad, tôi đã cập nhật câu trả lời cho câu hỏi của bạn vì nhận xét không đủ, hy vọng nó có thể hữu ích cho bạn :-) – shizhz

0

Mỗi vùng chứa có hệ thống tệp riêng độc lập với hệ thống tệp lưu trữ. Nếu bạn chạy container của bạn với cờ -v bạn có thể mount các ổ đĩa để host và container thấy cùng một dữ liệu (như trong docker run -v hostFolder: containerFolder).

Đầu ra đầu tiên bạn in mô tả khối lượng được gắn như vậy (do đó gắn kết) trong đó "/var/lib/docker/volumes/fac362...80535/_data" (máy chủ) được gắn vào "/ webapp" (vùng chứa) .

Giả sử bạn không sử dụng -v do đó thư mục không được gắn và chỉ có thể truy cập trong hệ thống tệp vùng chứa mà bạn có thể tìm thấy trong "/ var/lib/docker/volumes/blog_postgres-data/_data". Dữ liệu này sẽ bị xóa nếu bạn xóa vùng chứa (docker -rm) để có thể là một ý tưởng hay khi gắn kết thư mục.

Đối với câu hỏi mà bạn có thể truy cập dữ liệu này từ cửa sổ. Theo như tôi biết, docker cho windows sử dụng hệ thống con bash trong Windows 10. Tôi sẽ cố gắng chạy bash cho windows10 và đi đến thư mục đó hoặc tìm hiểu cách truy cập các thư mục linux từ windows 10. Kiểm tra này page để biết Câu hỏi thường gặp về hệ thống phụ linux trong windows 10.

Cập nhật: Bạn cũng có thể sử dụng docker cp để sao chép tệp giữa máy chủ và vùng chứa.

+0

' "/var/lib/docker/volumes/fac362...80535/_data"(container) được gắn vào "/ webapp"(host)' , Tôi nghĩ rằng bạn đã sai trật tự, trước đây là vị trí trên máy chủ và sau đó là vị trí bên trong vùng chứa. – shizhz

+0

Bạn nói đúng. Tôi sửa nó rồi. – herm

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