首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何访问由Docker桌面使用的wsl2?

如何访问由Docker桌面使用的wsl2?
EN

Stack Overflow用户
提问于 2021-12-22 13:35:32
回答 2查看 1.4K关注 0票数 3

我想用rsync将一个Docker映像从我的Windows10 PC传输到另一个,Fedora。我不能使用WSL,我需要WSL2,因为编译器说:

代码语言:javascript
代码运行次数:0
运行
复制
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。

代码语言:javascript
代码运行次数:0
运行
复制
PS C:\Users\antoi> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         1
  docker-desktop-data    Running         2
  docker-desktop         Running         2
EN

回答 2

Stack Overflow用户

发布于 2021-12-22 14:27:38

码头桌面图像、容器和卷存储在特殊的docker-desktop-data中。正如在this Super User question和我在这里的回答中所指出的,docker-desktop-data是不可引导的(从设计上来说)。

如果您真的必须访问文件系统,我已经在那里记录了一种方法。但总的来说,你不应该这样做。

相反,使用普通的docker命令(来自WSL2、PowerShell或CMD)将映像保存到tar文件中,如this answer中所述。

代码语言:javascript
代码运行次数:0
运行
复制
docker save -o <image.tar> <image_name>

然后使用rsync或其他方式传输文件,并在目标计算机上通过以下方式导入:

代码语言:javascript
代码运行次数:0
运行
复制
docker load -i <image.tar>

同样,这也来自WSL2、PowerShell或CMD。但是在您的例子中,Ubuntu实例是WSL1。这对码头工人不起作用。您需要将其转换为WSL2。

以防万一,在转换实例之前,我总是建议备份它。来自PowerShell:

代码语言:javascript
代码运行次数:0
运行
复制
wsl --export Ubuntu ubuntu_backup.tar

那么,一旦您有了备份:

代码语言:javascript
代码运行次数:0
运行
复制
wsl --set-version Ubuntu 2
wsl --set-default-version 2 # if desired

转换后,在Ubuntu中运行docker时不应该看到该错误。

附带注意-- Desktop将docker命令“注入”到设置中"WSL“选项卡中设置的任何WSL2实例中。这应该默认为您的“默认”WSL2实例,它(从您的屏幕截图中)是Ubuntu。“真正的”docker命令在docker-desktop中,但是它为您链接到Ubuntu。

因此,默认情况下,应该将所有docker功能直接放在Ubuntu实例中。docker-desktopdocker-desktop-data的设计都不适合最终用户直接使用.

票数 2
EN

Stack Overflow用户

发布于 2022-06-16 17:46:23

您可以使用以下命令访问停靠桌面WSL

代码语言:javascript
代码运行次数:0
运行
复制
wsl -d docker-desktop
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70449927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档