关于为新容器应用 docker 命名卷的奇怪问题
Strange issue about applying docker named volume for new container
根据我找到的所有信息,我了解到 docker 主机卷可以通过三种方式创建:
1- 忽略主机路径(它会自动创建一个具有随机 ID 的目录)
2-通过指定主机路径(它也会自动创建一个随机ID的目录)
3- 按命名卷并指定到主机路径
所以我首先尝试了两种方法:
$ docker run --name mongo-docker -v /data/db -p 27017:27017 -d mongo
$ docker run --name mongo-docker2 -v $(pwd)/data/:/data/db -p 27222:27017 -d mongo
然后我查看 docker 卷列表:
$ docker volume ls
DRIVER VOLUME NAME
local 5b829a731245cb7fe3a1f28aca4c4c3c3791105be228182ccb9b2f72319180c8
local fb058e804412fb56b2096e2cb903e3ae73647ef6ca076ad9003708b80f94ffc5
它看起来正是我所期望的。
但是当我尝试最后一个时,首先创建了一个卷:
$ docker volume create mongoVol
mongoVol
$ docker volume ls
DRIVER VOLUME NAME
local mongoVol
并将其用于主机卷路径,结果如下:
$ docker run --name mongo-docker3 -v mongoVol:/data/db -p 27322:27017 -d mongo
86bea0e52c9f395268665e191edc59f795d07266f17667502c7fa32879a6e021
$ docker volume ls
DRIVER VOLUME NAME
local 0de25c92be504d0a6b9bb9c83aa8a6fe17bf9bc195562314ca49edb1c4cf4377 <=== create a new one for new container?
local mongoVol
为什么要为此创建一个新目录?不应该只是“mongoVol”卷吗?
我无法在任何论坛、post 或任何视频中找到相关问题的答案....
mongo
image's Dockerfile 有 两个 目录在 VOLUME
语句中命名。您正在 /data/db
而非 /data/configdb
.
上安装内容
如果 Docker 文件将目录声明为 VOLUME
并且没有明确挂载在那里,Docker 会自动创建一个匿名卷(您的第一个案例)。这就是导致 docker volume ls
列表中出现额外数量的原因。
根据我找到的所有信息,我了解到 docker 主机卷可以通过三种方式创建:
1- 忽略主机路径(它会自动创建一个具有随机 ID 的目录)
2-通过指定主机路径(它也会自动创建一个随机ID的目录)
3- 按命名卷并指定到主机路径
所以我首先尝试了两种方法:
$ docker run --name mongo-docker -v /data/db -p 27017:27017 -d mongo
$ docker run --name mongo-docker2 -v $(pwd)/data/:/data/db -p 27222:27017 -d mongo
然后我查看 docker 卷列表:
$ docker volume ls
DRIVER VOLUME NAME
local 5b829a731245cb7fe3a1f28aca4c4c3c3791105be228182ccb9b2f72319180c8
local fb058e804412fb56b2096e2cb903e3ae73647ef6ca076ad9003708b80f94ffc5
它看起来正是我所期望的。
但是当我尝试最后一个时,首先创建了一个卷:
$ docker volume create mongoVol
mongoVol
$ docker volume ls
DRIVER VOLUME NAME
local mongoVol
并将其用于主机卷路径,结果如下:
$ docker run --name mongo-docker3 -v mongoVol:/data/db -p 27322:27017 -d mongo
86bea0e52c9f395268665e191edc59f795d07266f17667502c7fa32879a6e021
$ docker volume ls
DRIVER VOLUME NAME
local 0de25c92be504d0a6b9bb9c83aa8a6fe17bf9bc195562314ca49edb1c4cf4377 <=== create a new one for new container?
local mongoVol
为什么要为此创建一个新目录?不应该只是“mongoVol”卷吗?
我无法在任何论坛、post 或任何视频中找到相关问题的答案....
mongo
image's Dockerfile 有 两个 目录在 VOLUME
语句中命名。您正在 /data/db
而非 /data/configdb
.
如果 Docker 文件将目录声明为 VOLUME
并且没有明确挂载在那里,Docker 会自动创建一个匿名卷(您的第一个案例)。这就是导致 docker volume ls
列表中出现额外数量的原因。