0

docker 和 docker-compose 的新手,编写了启动几个服务的 compose 文件,其中一个依赖于 mongo 数据库。我不久前下载了 mongo 图像并将其与容器中的数据一起加载。当我通过 docker-compose 启动我的 mongo 实例时,会启动一个基于空图像的新容器,因此不要获取数据。

一直在阅读有关卷的内容,作为尝试组合以使用现有容器中的数据的一种方式,并且现在已经尝试了几种排列方式,但无法让它找到数据。

当我用数据启动容器并进行检查时,我得到:

    "Mounts": [
        {
            "Type": "volume",
            "Name": "3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e",
            "Source": "/var/lib/docker/volumes/3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e/_data",
            "Destination": "/data/configdb",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        },
        {
            "Type": "volume",
            "Name": "d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c",
            "Source": "/var/lib/docker/volumes/d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c/_data",
            "Destination": "/data/db",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        }
    ],

那么我是否正确地说我需要以某种方式让新容器使用卷标签来使用这些挂载点?

试过:

volumes:
  - type: volume
    source: /var/lib/docker/volumes/3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e/_data
    target: /data/configdb
    volume:
      nocopy: true

  - type: volume
    source: /var/lib/docker/volumes/d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c/_data
    target: /data/db
    volume:
      nocopy: true

和 :

volumes:
  - /data/configdb:/var/lib/docker/volumes/3f78b88e3e06f31d5f65a45bb1cb964245551875218d065162625cc73e662b1e/_data
  - /data/db:/var/lib/docker/volumes/d3f89470c9f8c53b55c30338f691eb1586600343004c502feffe8f81091d7d5c/_data

但老实说,抓住稻草,任何关于我应该如何使用现有数据的示例的帮助将不胜感激。

劳伦斯

4

2 回答 2

0

假设您使用的是 Compose 文件格式 v3.0+,请尝试在您的卷定义中将type选项更改为。bind不同之处在于,对于volume类型,提供时,source指的是命名卷的名称。对于bind, 是source指 Docker 守护程序主机上的文件或目录的路径。

您可以在 Docker文档中阅读有关不同类型挂载的更多信息。

于 2017-08-12T20:55:48.240 回答
0

尝试以下操作:

  1. 使用 docker 创建名称卷volume create data_storage
  2. 使用卷启动 mongodocker run -d -v data_storage:/data/db --name mongoding mongo
  3. 创建数据库并将一些文档添加到集合中
  4. 杀死容器并启动一个新容器以查看它是否正常工作。

    码头集装箱检查 708bf6fe0a5b

        "Mounts": [
        {
            "Type": "volume",
            "Name": "data_storage",
            "Source": "/var/lib/docker/volumes/data_storage/_data",
            "Destination": "/data/db",
            "Driver": "local",
            "Mode": "z",
            "RW": true,
            "Propagation": ""
        },
    

在这里阅读更多

于 2017-08-12T22:02:28.840 回答