Docker run--卷不断创建随机卷,而不使用指定的卷
Docker一直在创建随机卷,而不是在运行Docker run--卷不断创建随机卷,而不使用指定的卷,docker,docker-volume,Docker,Docker Volume,Docker一直在创建随机卷,而不是在运行Docker run…时使用I-specify 我将从没有卷开始 $ docker volume ls DRIVER VOLUME NAME 我将创建一个 docker volume create myvol 它将被创建 $ docker volume ls DRIVER VOLUME NAME local myvol 我将使用卷启动一个容器 $ docker run
Docker run…
时使用I-specify
我将从没有卷开始
$ 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
当您使用的映像将Dockerfile中的卷定义为容器路径,而您在run命令中未将其定义为卷时,会发生这种情况。当您有一个没有源的卷(也称为匿名卷)时,Docker会为卷名创建guid。您可以在图像上使用
docker image inspect
,查看该图像中定义的卷。如果您检查容器(docker container inspect
),您将看到您的卷正在使用,只是有另一个匿名卷指向另一个路径也在使用。就是这样。我在Dockerfile
中使用了一个卷
,该卷与我用于docker--run的--卷
不匹配。删除Dockerfile
中的VOLUME
,只需使用--VOLUME
标志即可运行docker run
。在后续的docker运行之后,不再创建未命名卷。谢谢这和OP做的有什么不同?OP现在已经编辑了他的问题。在docker volume create创建卷之前,这将创建一个名为myvol的容器,而不是一个名为myvol的卷。您可以在有问题的历史中看到,--name
选项起作用,至少在我当前版本的docker上是这样,它只是没有记录在--help
输出中。docker volume create
命令从不创建容器,它会创建具有该名称的卷。对不起,对我来说,总是--为其他人指定一个眼线标记来指定容器的名称;-)我们没有仔细阅读完整的命令