如何为由 Visual Studio Code 远程 devcontainer 配置创建的 docker 容器设置内存限制

Jes*_*sta 3 docker visual-studio-code

我的配置:

  • 带有 VSCode(带有 VSCode 远程开发扩展)和 Docker 桌面的笔记本电脑。
  • 带有 Docker 主机的服务器。
  • 我的项目本地只有:devcomposer.json和docker-compose.json。

我的过程:

  • 打开到服务器的 SSH 隧道。
  • 在 VSCode 中,我在容器中打开(它构建了容器)。
  • 我的远程开发容器构建良好,我可以使用其中的所有内容。

我的小问题:

当对大量填充的文件夹(例如 node_modules)运行简单的 chown 时,容器内存要求会变得疯狂,不仅会崩溃容器,还会崩溃我的整个服务器......

我试过了:

  1. 设置 runArgs 为:

    • [“-m”,“3g”]
    • [“--内存=3g”]
    • ["--内存=\"3g\""]
    • [“--内存预留=3g”]
  2. 在我的 Dockerfile 中为稍后运行 chown 命令的用户设置 ulimit。

  3. 删除 Docker 主机中的所有图像和容器,以强制 --no-cache (我也没有找到如何注入它:-/)

帮助!没有任何作用...有人知道我可以做什么来防止容器消耗服务器上的所有内存?

带有配置的仓库: https ://github.com/gsusI/vscode-remote_dev-config_test

Jes*_*sta 5

万一有人发现自己处于同一个无限循环中。我发现问题出在哪里了!!

使用 docker-compose 时似乎未使用runArgs,因此此处的配置无效。

我知道!!您会期待某个地方出现警告,对吗?

下一个最佳选择是通过 docker-compose.yml 文件来完成此操作,对吧?嗯,只有当您使用 docker-composer 版本 2 时,这才是正确的,因为版本 3 只能与 Docker swarm 一起使用。就我而言,我切换到版本 2,现在一切都很顺利。

长话短说

您的docker-compose.yml文件应如下所示:

version: '2'
services:
  <your-service-name>:

    ...

    mem_limit: 2g
    mem_reservation: 2g
Run Code Online (Sandbox Code Playgroud)

检查语法提示:https://docs.docker.com/compose/compose-file/compose-file-v2/#cpu-and-other-resources