簡體   English   中英

如何設置docker mongo數據量

[英]How to set docker mongo data volume

我想使用 Dockerizing MongoDB 並將數據存儲在本地卷中。

但是……失敗了……

它有mongo:latest images

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

我想將單聲道數據存儲在~/data 所以 - -

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

但是......它不起作用......

docker ps -- 沒有守護進程 mongo

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

嘗試運行“mongo”——失敗

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

碼頭工人檢查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
        }
    ],

如果我不設置數據量,mongo image 可以工作!

但是,在設置數據量時,它不能。 誰能幫我?

嘗試檢查docker 日志以查看當容器停止並進入“現有”模式時發生了什么。

另請參閱指定卷的完整路徑是否有幫助:

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

OP補充說:

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 

errno:13 是問題 30的內容。

此評論補充說:

這是一個文件所有權/權限問題(與此 docker 映像無關),無論是在 VB 中使用 boot2docker 還是在 VB 中使用 vagrant box。

盡管如此,我還是設法破解了所有權,將 boot2docker 中的 /Users 共享卷重新掛載到 uid 999 和 gid 999(這是 mongo docker 映像使用的內容)並啟動它:

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

但是... mongod 由於不支持文件系統類型而崩潰(mmap 不適用於 vboxsf)

所以實際的解決方案是嘗試DVC: Data Volume Container ,因為現在mongodb doc提到:

MongoDB 需要一個支持目錄fsync()的文件系統。
例如,HGFS 和 Virtual Box 的共享文件夾不支持此操作。

所以:

由於 virtualbox 共享文件夾的工作方式,安裝到 OSX 對 MongoDB 不起作用。


對於 DVC(數據卷容器),請嘗試docker volume create

docker volume create mongodbdata

然后將其用作:

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

看看是否效果更好。

正如我在評論中提到

一個docker volume inspect mongodbdata (請參閱docker volume inspect mongodbdata docker volume inspect )會給你它的路徑(如果你需要,你可以備份)

截至 2017 年夏季,本地卷不被視為最佳實踐。

每個Docker 文檔

卷是持久化 Docker 容器生成和使用的數據的首選機制。

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

通過 Docker Compose:

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

/data/db是保存在容器上的數據的位置。

<your-local-path>是您機器上的位置,也就是將保存實際數據庫日志文件的主機。

對於在Windows上運行的MongoDB容器的任何一個:所描述這里,那里當你使用路徑(我們稱之為從Windows主機裝配卷到MongoDB的容器是一個問題local volume )。

您可以使用Docker volume (由 Docker 管理的卷)來解決這個問題:

docker volume create mongodata

或者使用docker-compose作為我的偏好:

version: "3.4"

services:
  ....
  
  db:
    image: mongo
    volumes:
      - mongodata:/data/db
    restart: unless-stopped
 
volumes:
  mongodata:

在 Windows 10 上測試過,它可以工作

找到一個鏈接: mongodb支持VirtualBox 共享文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM