docker 如何为visual studio代码远程devcontainer配置创建的停靠器容器设置内存限制?

wkftcu5l  于 2022-11-28  发布在  Docker
关注(0)|答案(3)|浏览(202)
    • 我的配置:**
  • 带有VSCode的笔记本电脑(带有VSCode远程开发扩展)和Docker Desktop。
  • 具有Docker主机的服务器。
  • 我的项目在本地正好有:devcomposer.json和一个docer-compose.json。
    • 我的进程:**
  • 打开到服务器的SSH隧道。
  • 在VSCode中,我点击了open in container(它构建了容器)。
  • 我的远程开发容器构建得很好,我可以使用那里的一切。

"我的小问题"
当对大量填充的文件夹(如node_modules)运行一个简单的chown时,容器内存需求变得疯狂,不仅使容器崩溃,而且使我的整个服务器崩溃。
"我试过"

  • 使用以下参数设置runArgs:
  • ["-m"、"3g"]
  • ["--内存= 3g"]
  • ["--内存=" 3g""]
  • ["--内存保留= 3g"]
  • 在我的Dockerfile中为以后运行chown命令的用户设置ulimit。
  • 删除Docker主机中的所有图像和容器,以强制--no-cache(我还没有找到如何注入它:-/)
    • 帮助!**没有任何工作...有人知道我可以做些什么来防止容器消耗服务器上的所有内存吗?
s1ag04yj

s1ag04yj1#

万一有人发现自己在同一个无限循环。我发现什么问题!!
在使用停靠组合时,似乎没有使用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

wf82jlnq

wf82jlnq2#

您只需要设置gb而不是g:

"runArgs": [
    "--network=bridge",
    "--memory=6gb"],

这对我很有效。

wlzqhblo

wlzqhblo3#

如果您使用的是DockerFile,那么您可以使用下面的代码来增加容器使用的内存。

{
    "name" : "ProjectName",
    "build" : {
        "dockerfile": "Dockerfile"
    },

    "runArgs": [
        "--gpus", "all",
        "--shm-size=50gb" // gb or mb
    ],
}

使用--memory对Docker容器没有任何影响。这对我来说已经成功了。
您可以参阅https://datawookie.dev/blog/2021/11/shared-memory-docker/中的更多信息。

相关问题