如何从 WSL 中删除 Docker 发行版?

如何从 WSL 中删除 Docker 发行版?

我已经在 Windows 10 上安装了 Docker Desktop 和 Ubuntu 20.04 [Microsoft Store],并且发现我有三个发行版 [如下],但我想摆脱docker-desktopdocker-desktop-data,因为我不需要那么多,而且只想用于Ubuntu-20.04我的 Docker 实验:

PS $ wsl -l -v

  NAME                    STATE           VERSION
  Ubuntu-20.04            Running         2
  docker-desktop-data     Running         2
  docker-desktop          Running         2
  • 我知道docker-desktop-data它包含镜像并docker-desktop包含 Docker 基础设施,但我仍然不清楚,也感到困惑

我该如何删除它们以及我需要它们吗?

答案1

我昨天在 Stack Overflow 的评论中提到了这一点,但现在我有机会尝试一下,并且它按预期运行......

Docker Engine 将在单个 WSL2 实例中正常运行(但有一个已知警告,请参阅下面的解决方法),这听起来正是您真正想要的。

Docker Desktop 确实在基础 Docker Engine 上提供了一些附加功能:

  • 它可以在多个 WSL2 实例之间共享
  • 它可以从 PowerShell 和 CMD 运行
  • 它提供了容器和卷的 GUI 仪表板
  • 它可以处理自动升级(尽管有些人可能认为这不一定是一个优势)
  • 这是一种便捷的方法,可以自动为您处理下面所有其他的内容。

如果您不需要这些功能,那么:

  • 备份现有 Docker Desktop 安装中的所有卷和映像
  • 卸载 Docker Desktop(两个引用的docker-desktop.*实例将被删除)
  • 可选但建议:重新启动 Windows,或者至少wsl --shutdown
  • 按照以下说明在 Ubuntu 实例中安装 Docker Engine正常指令。为了回答这个问题,请使用“从包安装”,现在只需执行步骤 1 和 2。该docker run示例还无法运行。
  • 正常的 Docker 包安装将尝试启动守护进程,但这在 WSL 上不起作用,因为没有运行级别、启动脚本、systemd 等概念。您需要通过手动启动它sudo service docker start
  • 现在您可以运行该示例sudo docker run --rm hello-world(为什么 Docker 文档中没有这个--rm内容,我不明白)。然后使用 清理它sudo docker rmi hello-world(在我看来,这也应该是文档的一部分)。
  • 继续执行安装后步骤,以允许您的普通用户无需安装即可运行 Docker sudo

之后,Docker 文档中的下一步是使其能够在启动时运行。这在 WSL 上不起作用,因为没有“启动”的概念。因此,您需要一种替代方法来确保引擎在 WSL 中运行。当然,sudo service docker start当您需要它时,它可以只是一本手册。或者,如果您愿意,您可以将以下内容添加到您的~/.bashrc

wsl.exe -u root -e sh -c "service docker status || service docker start"

还有其他方法,但这只是一个例子。

答案2

我该如何删除它们?我需要它们吗?

如果删除它们,则会破坏您的 Docker 配置。

现在我想摆脱这两个。我不需要那么多。

实际上你需要它们两者。Docker 自己已经解释了它们存在的原因:

新的 WSL 后端设计与此非常接近,不同之处在于我们不在 VM 中运行 LinuxKit 发行版,而是在容器中运行。

在此处输入图片描述

这将为您创建 2 个 WSL 发行版:

  • Docker-desktop,我将其称为引导发行版

  • Docker-desktop-data,我将其称为数据存储发行版

从高层次的角度来看,引导发行版基本上取代了 Hyper-V,而数据存储发行版取代了我们之前附加到 VM 的 VHD。

来源:Docker Desktop WSL 2 后端简介

答案3

我该如何删除它们以及我需要它们吗?

如果您喜欢 Docker Desktop 真正使不同发行版能够相互通信的集成优势,那么您不应该删除它。


docker 桌面数据,docker 桌面 disto 是 Docker Desktop 架构的一部分。

这三篇文章总结得很好。

  1. https://www.nextofwindows.com/running-docker-inside-ubuntu-with-wsl2-windows-10
  2. https://code.visualstudio.com/blogs/2020/03/02/docker-in-wsl2
  3. https://www.docker.com/blog/new-docker-desktop-wsl2-backend/

相关内容