【问题标题】:Docker Volumes on WSL2WSL2 上的 Docker 卷
【发布时间】:2021-07-17 15:41:43
【问题描述】:

当我尝试使用我在 WSL2 上创建的卷运行容器时,它无法启动。
在完整的 Ubuntu 机器上使用完全相同的语法创建卷和容器就可以了。

我做错了什么?

docker volume create ubu-vol

ubu-vol

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

87ee4245f4022d1cf26da32fd701d768d449f679b4441b5bf734d834d9ccf190 泊坞窗:来自守护进程的错误响应:OCI 运行时创建失败:挂载无效 {Destination:ubu-vol Type:bind Source:/var/lib/docker/volumes/123784ee61e4bc2a77f98e6574ae6c71c4cc7fa6f7e109ac55f8f115df07eba5/_data 选项:[rbind]}:挂载目标 ubu-vol not绝对:未知。

在不指定卷的情况下运行容器在 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

“绝对路径”可能意味着不同的东西?
如果您有任何见解,我将不胜感激。

【问题讨论】:

    标签: docker docker-volume wsl-2


    【解决方案1】:

    您的--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
    

    【讨论】:

    • 这非常有效。我原以为我是在指定卷在主机上的位置,而不是在容器上。
    猜你喜欢
    • 2021-08-02
    • 2021-07-16
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多