限制 WSL2 中的 Docker 资源。但不是我的Ubuntu WSL2开发环境

问题描述 投票:0回答:1

所以我遇到以下问题:

我想限制 Docker 在 WSL2 中能够使用的资源。 我目前找到的答案说我可以使用 WSL2 配置文件来限制它。

但是,当我编辑文件并限制 WSL2 RAM 使用量时,我遇到了我的 WSL2 Ubuntu 实例缺乏 RAM 来构建前端项目的问题。

我找到了限制 Docker 在 Hyper-V 上运行的解决方案。
现在的问题是我无法从 WSL2 启动后端的 Docker 映像,我应该再次为 Docker 启用 WSL2。

在 WSL2 之外运行后端需要大量工作(因为某些工具不支持 Windows)。


因此,我希望找到一个配置来为我的 WSL2 Ubuntu 实例提供特定设置,并通过全局 WSL2 配置来限制其余设置。

或者能够从 WSL2 启动 Hyper-V Docker 镜像

docker wsl-2 hyper-v
1个回答
0
投票

管理 Docker、WSL2 和 Ubuntu 实例之间的资源限制和配置可能很复杂,但所需的安排可能是可以实现的。运行容器时,您可以定义资源限制来限制 Docker 容器使用的资源。例如,您可以使用

--cpus
--memory
选项来限制特定容器的 CPU 消耗和内存。这可确保 Docker 容器不会利用所有可用资源。

docker run --cpus 2 --memory 2g my-container

这将容器限制为两个 CPU 核心和 2 GB RAM。您建议编辑 WSL2 配置文件以最大限度地减少 RAM 利用率,但这对您的 WSL2 Ubuntu 实例产生了不利影响。不要限制整个 WSL2 实例的资源,而是尝试利用前面描述的 Docker 特定的资源限制。如果您希望在 Hyper-V 下运行 Docker 容器,同时仍通过 WSL2 与它们交互,则可以利用

docker context
功能在上下文之间进行交换。这使您能够在切换回 WSL2 之前在 Hyper-V 下执行容器。首先,将 Docker 设置为使用 Hyper-V 作为默认上下文。

docker context create my-hyperv --docker "host=myswitchname"
docker context use my-hyperv

"myswitchname"
应替换为 Hyper-V 虚拟交换机的名称。当您准备好将 Hyper-V 用于 Docker 容器时,请转到 Hyper-V 上下文。

docker context use my-hyperv

当您希望返回 WSL2 时,请输入:

docker context use default

通过这种方式,您可以使用 Hyper-V 运行 Docker 容器,并从 WSL2 环境访问它们。如果您的 WSL2 Ubuntu 实例没有足够的 RAM 用于前端开发,您可能需要在开发过程中临时为其分配额外的资源。 WSL 配置允许您更改 WSL2 实例的资源分配。完成建造后,您可以再次降低资源。

© www.soinside.com 2019 - 2024. All rights reserved.