Docker run --volume 不断创建随机卷而不使用指定的卷

Col*_*ole 4 docker docker-volume

Docker 不断创建随机卷,而不是使用我在运行时指定的卷docker run...

我将从无卷开始。

$ docker volume ls
DRIVER              VOLUME NAME
Run Code Online (Sandbox Code Playgroud)

我将创建一个

docker volume create myvol
Run Code Online (Sandbox Code Playgroud)

它将被创建

$ docker volume ls
DRIVER              VOLUME NAME
local               myvol
Run Code Online (Sandbox Code Playgroud)

我将使用卷启动一个容器

$ docker run -d \
  --name myapp \
  --publish 1337:1337 \
  --volume myvol:/my-work-dir/.tmp \
  foo/bar:tag
Run Code Online (Sandbox Code Playgroud)

我会再次检查我的卷,我有我创建的一本和一本新的。

$ docker volume ls
DRIVER              VOLUME NAME
local               9f7ffe30c24821c8c2cf71b4228a1ec7bc3ad6320c05451e42661a4e3c2c0fb7
local               myvol
Run Code Online (Sandbox Code Playgroud)

为什么没有myvol被使用?为什么要创建新卷?

BMi*_*tch 7

当您使用的映像在 Dockerfile 中将 VOLUME 定义为您未在运行命令中定义为卷的容器路径时,就会发生这种情况。当您有一个没有源的卷(也称为匿名卷)时,Docker 会为卷名称创建 guid。您可以使用docker image inspect图像来查看该图像中定义的卷。如果您检查容器 ( docker container inspect),您将看到您的卷正在被使用,只是另一个不同路径的匿名卷也正在被使用。