如何访问 Docker 桌面使用的 wsl2?
Posted
技术标签:
【中文标题】如何访问 Docker 桌面使用的 wsl2?【英文标题】:How can I access wsl2 which is used by Docker desktop? 【发布时间】:2022-01-23 17:30:36 【问题描述】:我想使用 rsync 将 Docker 映像从我的 Windows10 PC 传输到另一台 Fedora。我不能使用 WSL,我需要 WSL2,正如编译器所说:
ubu@DESKTOP-QL4RO3V:/mnt/c/Windows/system32$ docker images
The command 'docker' could not be found in this WSL 1 distro.
We recommend to convert this distro to WSL 2 and activate
the WSL integration in Docker Desktop settings.
For details about using Docker Desktop with WSL 2, visit:
https://docs.docker.com/go/wsl2/
但我认为,由于我有 Docker 桌面,它正在使用 WSL2:
但我不知道如何运行我自己使用的 wsl2 Docker。
PS C:\Users\antoi> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 1
docker-desktop-data Running 2
docker-desktop Running 2
【问题讨论】:
请说明您所指的“访问”类型。 在 Docker Desktop 的配置页面上有一个使用基于 WSL2 的引擎的选项,检查它,它应该可以在 WSL2 之上运行 当然@MathiasNikkel Docker 桌面上的配置页面在哪里? 在您的屏幕上,标题上有一个设置选项,那里有一个常规选项卡,此配置如下所示:[link]cdn.discordapp.com/attachments/784092634532675626/… 【参考方案1】:Docker 桌面映像、容器和卷存储在特殊的 docker-desktop-data
中。正如this Super User question 和我在那里的回答中所述,docker-desktop-data
不可引导(按设计)。
如果您真的必须访问文件系统,我已经记录了一种方法可以在那里进行。但总的来说,您应该不需要这样做。
改为使用普通的 docker
命令(来自 WSL2、PowerShell 或 CMD)将图像保存到 tar
文件中,如 this answer 中所述:
docker save -o <image.tar> <image_name>
然后使用rsync
或其他方式传输文件,并在目标机器上,通过以下方式导入:
docker load -i <image.tar>
同样,这是来自 WSL2、PowerShell 或 CMD。但在您的情况下,Ubuntu 实例是 WSL1。这对 Docker 不起作用。您需要将其转换为 WSL2。
以防万一,我始终建议在转换您的实例之前对其进行备份。来自 PowerShell:
wsl --export Ubuntu ubuntu_backup.tar
然后,一旦你有了备份:
wsl --set-version Ubuntu 2
wsl --set-default-version 2 # if desired
转换后,在 Ubuntu 中运行 docker
时应该不会看到该错误。
旁注——Docker Desktop 将docker
命令“注入”到您在“设置”的“WSL 集成”选项卡中设置的任何 WSL2 实例中。这应该默认为您的“默认”WSL2 实例,该实例(从您的屏幕截图中)是 Ubuntu。 “真正的”docker
命令在 docker-desktop
内部,但它已为您链接到 Ubuntu。
因此,默认情况下,您应该在您的 Ubuntu
实例中直接拥有所有 docker
功能。 docker-desktop
和 docker-desktop-data
都不是为最终用户直接使用而设计的。
【讨论】:
感谢您的回答 NotTheDr01ds。所以我应该升级我的wsl? 啊,是的。我没有注意到 Ubuntu 实例设置为版本 1。我会更新我的答案,但是是的。首先等待编辑的路线,以确保。 如果您想尝试一下,您也应该能够从 PowerShell(或 CMD)中使用它。应该不需要任何额外的东西来工作。以上是关于如何访问 Docker 桌面使用的 wsl2?的主要内容,如果未能解决你的问题,请参考以下文章
当 Docker 桌面在 WSL2 中运行时,bash 中的长工作目录
hostconfig.json 在哪里(Docker 桌面 + WSL2 环境)
WSL2 和 Docker 桌面上的 Postgres 卷挂载:PGDATA 文件夹上的权限被拒绝
使用 WSL2 在 Docker Desktop 上运行的容器没有实时输出
使用 WLS2 在 Docker 桌面上启用 Ingress 控制器
在 Windows 10 Home 上使用 WSL2 上的 Docker Desktop 时,如何更改 docker 映像的位置?