"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-desktop
和 docker-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 对您的组织来说是一个有价值的工具,那么允许其持续开发和维护的财务支持也对您的公司有益。
为什么建议 运行 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-desktop
和docker-desktop-data
个 WSL 实例已创建。 Docker 引擎安装在docker-desktop
中,然后暴露给其他 WSL2 实例。例如,Ubuntu 中的 运行ningls $(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 对您的组织来说是一个有价值的工具,那么允许其持续开发和维护的财务支持也对您的公司有益。