ant*_*t31 15 docker windows-subsystem-for-linux
为什么建议运行 WSL2+docker 桌面 windows,而不是直接在 WSL2 发行版上安装 docker?
似乎两者都有效,但我读到要走的路是使用 docker 桌面,我试图理解为什么。
谢谢
Not*_*1ds 19
Windows 中的 Docker Desktop 与 WSL2 实例中的 Docker Engine (CE) 之间的差异。其中一些在其他答案中重复,许多则没有:
添加附加功能,例如:
docker-desktop可供所有 shell(WSL shell、PowerShell 和 CMD)使用。可从多个 WSL2 实例、PowerShell 和 CMD 访问 Docker Desktop 安装中的 Docker 守护程序。
默认情况下仍使用 WSL2。  docker-desktop并docker-desktop-data创建 WSL 实例。安装了一个 Docker 引擎,docker-desktop然后将其暴露给其他 WSL2 实例。例如,ls $(command -v docker)在 Ubuntu 中运行将显示/usr/bin/docker是 的符号链接/mnt/wsl/docker-desktop/cli-tools/usr/bin/docker,并且用于访问守护进程的 Docker 套接字被注入到/var/run每个 WSL 实例中。
如果 WSL2 无法在系统上运行,也可以在 Windows Pro 及更高版本上使用 Hyper-V 后端。
映像、容器、卷等包含在docker-desktop-dataWSL2 发行版中,无法直接访问。docker最佳实践是使用标准命令导出和移动数据。
增值功能(Docker Engine 和 K8S 之上)是闭源的
企业使用需要付费许可证(目前起价为 5 美元/月)(见脚注)
似乎相当密切地跟踪开源版本,尽管我没有太关注 CE 版本合并到 Desktop 之间间隔了多长时间。
据我所知,无法将 Docker Engine 版本与 Docker Desktop 版本解耦,因此如果需要,无法回滚到系统上较早的 CE 版本。
可以直接安装到大多数 WSL2 发行版中,只要该发行版首先支持 Docker 引擎即可。换句话说,虽然您可以为 WSL2 创建一个非常基本的 BusyBox 发行版(我已经完成了),但如果不添加额外的依赖项,您将无法在其中运行 Docker。当然,大多数主要的、功能齐全的发行版都没有问题。
开源
Kubernetes 必须单独配置
安装需要更深入的 Linux 知识,以及对 WSL 差异的理解。例如,Docker 文档假设 Systemd 可用,并且包管理器在安装后立即启动 Docker。WSL2 上的情况并非如此。
映像、容器、卷等放置在已安装 CE 的 WSL2 发行版中。
许多 Docker Desktop 功能可以使用 CE 版本进行复制,但需要手动操作。例如,如果您付出努力,您没有理由不能创建可供其他 WSL2 实例使用的相同类型的“共享”环境。
始终可以安装所需的任何版本,并且如果需要,计算机上的不同 WSL2 发行版可以具有不同的 Docker Engine/CE 版本。
请注意,我与 Docker 没有关系,也没有经济利益。
Docker Desktop 将为大多数用户提供最好的服务。仅预集成就可以节省时间,而且物有所值。可能不太熟悉 Linux 的 Windows 用户几乎肯定应该选择桌面版本。
我知道付费模式似乎总是让社区中的一些人感到不安,但我鼓励那些确实需要付费许可证的人考虑:
以每年 60 美元的价格计算,如果 Docker Desktop 比配置 Docker Engine 节省了哪怕半个小时的时间,那么它很可能已经物有所值。并不是说你每小时赚 120 美元(或者也许你确实赚了),而是你的雇主希望你至少能在这个范围内产生生产力。你的雇主通常更愿意花钱购买那些能让你提高工作效率的工具,而不是让你自己动手。
如果您认为 Docker 对您的组织来说是一个有价值的工具,那么允许其持续开发和维护的财务支持也对您的公司有利。
jma*_*nry 15
使用 Docker Desktop 与 WSL2 集成与直接在 WSL2 中使用 docker 而不使用 Docker Desktop 的主要区别在于与工具的集成级别。
当您使用 Docker 桌面时,您可以在 powershell/cmd 中访问 docker,可以在 Windows 上访问您的文件,可以切换到 Windows 容器并在您的 IDE 中使用它。
如果您在 WSL2 发行版中安装 docker,则无法直接从 Windows 访问 docker。
小智 7
尽管批准的答案中指出的所有好处听起来都很有趣。我建议直接在 WSL 中使用 docker-ce 而不是 Docker for Desktop。目前实在是太麻烦了。
即使所有问题很久以前就已经报告过。您经常会遇到 Windows 浏览器与 WSL 之间的连接丢失或 WSL 内运行的应用程序与 Docker for Desktop 之间的连接丢失的问题。如果在拥有 Docker 桌面时关闭 Windows,另一个常见问题也很烦人:
com.docker.wsl-distro-proxy.exe - Application Error
The application was unable to start correctly (0xc0000142).
Run Code Online (Sandbox Code Playgroud)
总而言之,在桌面 Windows 上使用 Docker 是一件很痛苦的事情。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           8046 次  |  
        
|   最近记录:  |