"WSL2+docker desktop windows" 和直接在 WSL2 发行版上安装 docker 之间的区别?

Difference between "WSL2+docker desktop windows" and directly install docker on the WSL2 distro?

为什么建议 运行 WSL2+docker 桌面 windows,而不是直接在 WSL2 发行版上安装 docker?

似乎两者都有效,但我读到要走的路是 docker 桌面,我试图理解为什么。

谢谢

使用集成了 WSL2 的 Docker Desktop 与在没有 Docker Desktop 的情况下直接在 WSL2 中使用 docker 之间的主要区别在于与您的工具的集成级别。

当您使用 Docker 桌面时,您可以访问 powershell/cmd 中的 docker,可以访问 windows 中的文件,可以切换到 Windows 容器并将其与您的 IDE.

一起使用

如果您在 WSL2 发行版中安装 docker,将无法从 Windows 直接访问 docker。

Docker with WSL2 允许您在 windows 上 运行 linux 容器,因为它可以直接安装在 windows 的 WSL 中。

当您构建应用程序时,您可以在 dockerfile 中使用 linux 个图像,而如果您在没有 WSL2 的情况下安装它,那么您只能使用安装时基于 windows 个图像在 windows 内核上。

如果您想了解更多有关如何实现此功能的信息,请查看 https://codingfullstack.com/cloud/docker-installation-wsl2/

虽然批准的答案中指出的所有好处听起来都很有趣。 我建议直接在 WSL 中使用 docker-ce,而不是在 Desktop 中使用 Docker。 目前的bug太多了。

即使很久以前就已经报告了所有问题。 您经常会遇到 Windows 浏览器与 WSL 之间的连接丢失或 WSL 中的应用程序 运行 与桌面版 Docker 之间的连接丢失的问题。 如果在 Docker 桌面时关闭 Windows,另一个常见问题也很烦人:

com.docker.wsl-distro-proxy.exe - Application Error
The application was unable to start correctly (0xc0000142).

总而言之,使用 Docker 桌面 Windows 是一种痛苦的 atm。

Docker Desktop in Windows 与 WSL2 instance 中的 Docker Engine (CE) 之间的差异。其中一些在其他答案中重复,很多不是:

Docker 桌面:
  • 添加附加功能,例如:

    • 容器、图像和卷的仪表板视图
    • (可选)自动更新检查和下载
    • (可选)登录 Windows
    • 后自动启动 Docker 桌面
    • (可选)built-in docker-desktop 实例提供的 Kubernetes 本地集群可用于所有 shell(WSL shell、PowerShell 和 CMD。
    • (预览版)开发环境,如果我总结正确的话,它将代码和服务一起封装在容器中,可以轻松地与其他团队成员共享。
  • 可以从多个 WSL2 实例、PowerShell 和 CMD 访问 Docker 桌面安装中的 Docker 守护程序。

  • 仍然默认使用 WSL2。 docker-desktopdocker-desktop-data 个 WSL 实例已创建。 Docker 引擎安装在 docker-desktop 中,然后暴露给其他 WSL2 实例。例如,Ubuntu 中的 运行ning ls $(command -v docker) 将显示 /usr/bin/docker/mnt/wsl/docker-desktop/cli-tools/usr/bin/docker 的符号链接,并且 Docker 套接字访问守护程序是在每个 WSL 实例中注入 /var/run

  • 如果 WSL2 无法在系统上 运行,也可以在 Windows Pro 和更高版本上使用 Hyper-V 后端。

  • 图像、容器、卷等包含在 docker-desktop-data WSL2 发行版中,无法直接访问。使用标准 docker 命令导出和移动数据,这是最佳做法。

  • Value-added 特征(超过 Docker 引擎和 K8S)是 closed-source

  • 企业使用需要付费许可(目前起价为每月 5 美元)(见脚注)

  • 似乎相当密切地跟踪 open-source 版本,尽管我没有太注意将 CE 版本合并到 Desktop 之间经过了多少时间。

  • 据我所知,无法将 Docker 引擎版本与 Docker 桌面版本分离,因此无法回滚到较早的 CE 版本如果需要,在系统上。

Docker Engine/CE:
  • 可以直接安装到大多数 WSL2 发行版中,只要该发行版首先支持 Docker 引擎。换句话说,虽然您可以为 WSL2 创建一个 非常 的基本 BusyBox 发行版(我已经做到了),但您将无法 运行 Docker在其中而不添加额外的依赖项。大多数主要的 full-featured 发行版当然没有问题。

  • Open-source

  • Kubernetes必须单独配置

  • 安装需要更多 in-depth Linux 知识,以及对 WSL 差异的理解。例如,Docker 文档假定 Systemd 可用并且包管理器在安装后立即启动 Docker。 WSL2 不是这种情况。

  • 图像、容器、卷等放置在您安装了 CE 的 WSL2 发行版中。

  • 许多 Docker 桌面功能可以使用 CE 版本复制,但需要手动操作。例如,如果您付出努力,没有理由不能创建可供其他 WSL2 实例使用的相同类型的“共享”环境。

  • 始终可以安装所需的任何版本,如果需要,您计算机上的不同 WSL2 发行版可以有不同的 Docker Engine/CE 版本。


总结与意见:

请注意,我与 Docker 没有关系,也没有经济利益。

大多数用户最适合 Docker 桌面。 pre-integration 本身就是一个节省时间的工具。 Windows 不太熟悉 Linux 的用户应该几乎肯定会选择桌面版。

我知道付费模式似乎总是让社区中的一些人感到不安,但我鼓励那些确实需要付费许可的人考虑:

  • 每年 60 美元,如果 Docker Desktop 比配置 Docker Engine 节省了半小时的时间,它很可能已经收回了成本。并不是说你每小时赚 120 美元(或者你可能赚了),而是你的雇主希望你至少在这个范围内产生生产力。你的雇主通常宁愿花钱买能提高你工作效率的工具,也不愿让你 roll-your-own.

  • 如果您认为 Docker 对您的组织来说是一个有价值的工具,那么允许其持续开发和维护的财务支持也对您的公司有益。