Docker WSL2 上的卷

Docker Volumes on WSL2

当我尝试 运行 一个带有我在 WSL2 上创建的卷的容器时,它无法启动。
在完整的 Ubuntu 机器上使用完全相同的语法创建卷和容器工作得很好。

我做错了什么?

docker volume create ubu-vol

ubu-vol

docker run -it -d -v ubu-vol --name ubu-dev ubuntu /bin/bash

87ee4245f4022d1cf26da32fd701d768d449f679b4441b5bf734d834d9ccf190 docker: Error response from daemon: OCI runtime create failed: invalid mount {Destination:ubu-vol Type:bind Source:/var/lib/docker/volumes/123784ee61e4bc2a77f98e6574ae6c71c4cc7fa6f7e109ac55f8f115df07eba5/_data Options:[rbind]}: mount destination ubu-vol not absolute: unknown.

运行 未指定体积的容器在 WSL2 中工作正常。

docker run -it -d --name ubu-dev ubuntu /bin/bash

容器启动,我可以附加到它。

我也尝试过更具体地指定卷的路径(因为错误说它必须是绝对的),但我得到了相同的结果。

docker volume create \
    --driver local \
    --opt type=nfs \
    --opt device=:/mnt/d/docker-vol \
    ubu-vol

也许“绝对路径”的含义不同?
如果您有任何见解,我将不胜感激。

您的 --volume/-v 语法 doesn't look right。您没有指定应该将其安装在容器内部的路径。

尝试:

docker run -it -d -v "ubu-vol:/mnt/docker-ubu-vol" --name ubu-dev ubuntu /bin/bash

但还要考虑 Docker 建议使用较新的 --mount 选项:

docker run -it -d --mount "type=volume,src=ubu-vol,dst=/mnt/docker-ubu-vol" --name ubu-dev ubuntu /bin/bash