2016-02-15 18 views
19

Tôi muốn sử dụng Dockerizing MongoDB và lưu trữ dữ liệu ở mức cục bộ.Cách đặt khối lượng dữ liệu docker mongo

Nhưng .. thất bại ...

Nó có Mongo: hình ảnh mới nhất

kerydeMacBook-Pro:~ hu$ docker images 
REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
mongo    latest    b11eedbc330f  2 weeks ago   317.4 MB 
ubuntu    latest    6cc0fc2a5ee3  3 weeks ago   187.9 MB 

Tôi muốn để lưu trữ các dữ liệu mono trong ~/dữ liệu. nên ---

kerydeMacBook-Pro:~ hu$ docker run -p 27017:27017 -v ~/data:/data/db --name mongo -d mongo 
f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43 

Nhưng ... nó không hoạt động ...

Docker ps - không daemon Mongo

kerydeMacBook-Pro:~ hu$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 

cố gắng để chạy "Mongo "--failed

kerydeMacBook-Pro:~ hu$ docker exec -it f57 bash 
Error response from daemon: Container f57 is not running 

Docker kiểm tra Mongo

kerydeMacBook-Pro:~ hu$ docker inspect mongo 
[ 
{ 
    "Id": "f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43", 
    "Created": "2016-02-15T02:19:01.617824401Z", 
    "Path": "/entrypoint.sh", 
    "Args": [ 
     "mongod" 
    ], 
    "State": { 
     "Status": "exited", 
     "Running": false, 
     "Paused": false, 
     "Restarting": false, 
     "OOMKilled": false, 
     "Dead": false, 
     "Pid": 0, 
     "ExitCode": 100, 
     "Error": "", 
     "StartedAt": "2016-02-15T02:19:01.74102535Z", 
     "FinishedAt": "2016-02-15T02:19:01.806376434Z" 
    }, 




"Mounts": [ 
     { 
      "Source": "/Users/hushuming/data", 
      "Destination": "/data/db", 
      "Mode": "", 
      "RW": true 
     }, 
     { 
      "Name": "365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a", 
      "Source": "/mnt/sda1/var/lib/docker/volumes/365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a/_data", 
      "Destination": "/data/configdb", 
      "Driver": "local", 
      "Mode": "", 
      "RW": true 
     } 
    ], 

nếu tôi không đặt khối lượng dữ liệu, hình ảnh Mông Cổ có thể làm việc!

Nhưng, khi đặt khối lượng dữ liệu, nó không ... Ai có thể giúp tôi?

Trả lời

11

Hãy thử và kiểm tra docker logs để xem điều gì đang xảy ra khi vùng chứa dừng lại và chuyển sang chế độ "Đã tồn tại".

Xem thêm nếu xác định đường dẫn đầy đủ cho khối lượng sẽ giúp:

docker run -p 27017:27017 -v /home/<user>/data:/data/db ... 

Các OP cho biết thêm:

docker logs mongo 
exception in initAndListen: 98 
Unable to create/open lock file: /data/db/mongod.lock 
errno:13 Permission denied 
Is a mongod instance already running? 
terminating 2016-02-15T06:19:17.638+0000 
I CONTROL [initandlisten] dbexit: rc: 100 

Một errno: 13 là gì issue 30 là về.

This comment cho biết thêm:

Đó là một vấn đề quyền sở hữu tập tin/sự cho phép (không liên quan đến hình ảnh Docker này), hoặc sử dụng boot2docker với VB hoặc một hộp lang thang với VB.

Tuy nhiên, tôi quản lý để hack các quyền sở hữu, remounting các/Users khối lượng chia sẻ bên boot2docker để UID 999 và gid 999 (mà là những gì Mongo ảnh Docker sử dụng) và đã nhận nó để bắt đầu:

$ boot2docker ssh 
$ sudo umount /Users 
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users 

Nhưng ...mongod tai nạn do hệ thống tập tin gõ không được hỗ trợ (mmap không làm việc trên vboxsf)

Vì vậy, các giải pháp thực tế là để thử một DVC: Data Volume Container, bởi vì ngay bây giờ các mongodb doc đề cập:

MongoDB đòi hỏi một hệ thống tập tin hỗ trợ fsync() trên các thư mục.
Ví dụ: thư mục chia sẻ của HGFS và Hộp ảo không hỗ trợ hoạt động này.

Vì vậy:

sự gắn để OSX sẽ không làm việc cho MongoDB vì cách mà VirtualBox chia sẻ thư mục làm việc.


Đối với một DVC (Dữ liệu Khối lượng container), hãy thử docker volume create:

docker volume create mongodbdata 

Sau đó, sử dụng nó như:

docker run -p 27017:27017 -v mongodbdata:/data/db ...  

Và xem nếu mà làm việc tốt hơn.

Như tôi đã đề cập đến in the comments:

Một docker volume inspect mongodbdata (xem docker volume inspect) sẽ cung cấp cho bạn đường đi của nó (mà bạn có thể sau đó sao lưu nếu bạn cần)

+0

chạy nhật ký docker mongo, - ngoại lệ trong initAndListen: 98 Không thể tạo/mở tệp khóa: /data/db/mongod.lock errno: 13 Quyền bị từ chối Là một cá thể mongod đã chạy ?, chấm dứt 2016-02- 15T06: 19: 17.638 + 0000 Tôi KIỂM SOÁT [initandlisten] dbexit: rc: 100 –

+1

Có lẽ vấn đề về quyền sau đó là – VonC

+0

nhưng cách giải quyết? –

10

Tính đến mùa hè năm 2017, một khối lượng địa phương không được xem là tốt nhất thực hành.

mỗi Docker Docs:

Volumes là cơ chế ưu tiên cho sự bền bỉ dữ liệu được tạo bởi và được sử dụng bởi container Docker.

docker volume create mongodbdata 
docker run -p 27017:27017 -v mongodbdata:/data/db mongo 
+0

Tôi không thấy tuyên bố này tại tài liệu docker nữa. Bạn có thể vui lòng xem lại và cập nhật câu trả lời của bạn không? – heroin

4

Via Docker Soạn:

version: '2' 
    services: 
     mongodb: 
     image: mongo:latest 
     volumes: 
      - ./<your-local-path>:/data/db 

/data/db là vị trí của dữ liệu được lưu trên thùng sơn.

<your-local-path> là vị trí trên máy của bạn AKA máy chủ lưu trữ nơi tệp nhật ký cơ sở dữ liệu thực tế sẽ được lưu.

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