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

Docker run --volume keeps creating random volumes and not using the one specified

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

时指定的卷

我将从无卷开始。

$ docker volume ls
DRIVER              VOLUME NAME

我会创建一个

docker volume create myvol

它将被创建

$ docker volume ls
DRIVER              VOLUME NAME
local               myvol

我将使用该卷启动一个容器

$ docker run -d \
  --name myapp \
  --publish 1337:1337 \
  --volume myvol:/my-work-dir/.tmp \
  foo/bar:tag

我会再去检查我的卷,我有一个我创建的和一个新的。

$ docker volume ls
DRIVER              VOLUME NAME
local               9f7ffe30c24821c8c2cf71b4228a1ec7bc3ad6320c05451e42661a4e3c2c0fb7
local               myvol

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

如何使用卷:

创建卷:

docker volume create my-vol

要使用此卷:

docker run -d  --name devtest -v my-vol:/app   nginx:latest

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