【问题标题】:How can I set a memory limit for a docker container created by visual studio code remote devcontainer configuration如何为由 Visual Studio 代码远程 devcontainer 配置创建的 docker 容器设置内存限制
【发布时间】:2019-10-23 23:42:37
【问题描述】:

我的配置:

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

我的过程:

  • 打开到服务器的 SSH 隧道。
  • 在 VSCode 中,我在容器中打开(用于构建容器)。
  • 我的远程开发容器构建良好,我可以使用那里的所有东西。

我的小问题:

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

我试过了:

  1. 将 runArgs 设置为:

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

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

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

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

【问题讨论】:

    标签: docker visual-studio-code


    【解决方案1】:

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

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

    我知道!!你会在某处看到警告,对吧?

    下一个最佳选择是通过 docker-compose.yml 文件执行此操作,对吗?好吧,这仅在您使用 docker-composer 版本 2 时才适用,因为版本 3 仅适用于 Docker swarm。就我而言,我切换到版本 2,现在一切正常。

    TL;DR

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

    version: '2'
    services:
      <your-service-name>:
    
        ...
    
        mem_limit: 2g
        mem_reservation: 2g
    

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

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2018-01-20
      • 1970-01-01
      • 2017-10-06
      • 2021-02-03
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 2019-05-19
      相关资源
      最近更新 更多