trory将外部音量添加到Docker组成,但获得

问题描述 投票:0回答:1

docker卷创建

DB-DATA

docker volume inspect db-data [ { "CreatedAt": "2025-03-19T15:50:01+03:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/db-data/_data", "Name": "db-data", "Options": null, "Scope": "local" } ] 在此步骤中,我可以将

db-data
安装到测试容器中,并添加一些测试数据。
    docker构成-dmongo
  1. docker-compose.yml version: '3' services: mongo: image: mongo:4.4.18 restart: unless-stopped volumes: - source: db-data target: /data/db type: bind bind: create_host_path: false #- db-data:/data/db # this way just always create new anonymous volume volumes: db-data: external: true
  2. thr丢失的错误:
守护程序的响应:“ bind”:bind源路径的类型不存在:/home/home/myhomefolder/myrepo/

db-data

    SO,看起来Docker构成没有看到
  1. db-data
  2. 喜欢外部音量(
怎么了?

PS:以前,当Snap使用Docker时,我遇到了这个问题。然后卸下并从发动机安装。但是错误仍然在这里(

PPS:也许LVM可以做到这一点?

它似乎您正在将命名卷与绑定安装混合在一起。 您使用:

type: bind source: db-data target: /data/db

但是,当您指定docker时,请使用“源”作为文件系统上的主机路径(即,源:db-data→/home/../myrepo/myrepo/db-data)..

由于目录不存在(在主机上) - 您得到:

不存在的源路径:/home/myhomefolder/myrepo/db-data

docker docker-compose
1个回答
0
投票
由Docker(in/var/lib/docker/volumes/...。:)

如果您已经跑了:

type: bind

您有一个名为
docker volume create db-data

的命名卷。要使用该卷

在Docker组成的外部
,请勿使用

db-data

Instead做:

type: bind

version: '3.9' services: mongo: image: mongo:4.4.18 restart: unless-stopped volumes: - db-data:/data/db volumes: db-data: external: true 告诉Docker撰写使用名为卷DB-data

(而不是创建一个新的卷)。

db-data:/data/db

告诉撰写“不要创建此卷 - 它已经存在。”

因此,它将将现有的命名卷DB-DATA连接到您的容器中的 /数据 /db。
如果您希望Docker管理数据存储。

B)或使用绑定安装(将主机目录映射到容器中)
如果您希望mongo将其数据存储在主机目录中(例如/home/myhomefolder/myrepo/db-data在您的系统上),则必须在主机上给组合路径。
e.g。:

external: true

确保主机上已经存在目录/主页/myhomefolter/myrepo/db-data。否则,Docker会抱怨它不存在。
(如果您希望Docker自动创建主机路径,则可以设置bind.create_host_path:true在撰写规格中,但请确保您在支持该的Docker版本上。)
fyi:

如果你做
version: '3.9' services: mongo: image: mongo:4.4.18 restart: unless-stopped volumes: - type: bind source: /home/myhomefolder/myrepo/db-data target: /data/db

没有一个卷块引用db-data:使用外部:true,Compose将创建一个新的命名卷,默认情况下使用名称

_db-data。如果您没想到,那看起来像是随机的新卷。

如果您指定:

volumes: - db-data:/data/db

它将确保撰写的卷命名为DB-DATA,您可以使用Docker卷创建自己创建db-data.

名称音量(由本地驾驶员支持)与绑定安装座不同。它们具有不同的用例,必须以不同的作用声明。

大多数时间,如果您想要持久数据,则使用“ docker natum卷”(解决方案a)),因为它可以处理权限,所有权,...

因此,您的最终Docker-Compose.yml可能只是:

volumes: db-data: external: true

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.