AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1157424
Accepted
Danny Beckett
Danny Beckett
Asked: 2024-04-05 08:59:08 +0800 CST2024-04-05 08:59:08 +0800 CST 2024-04-05 08:59:08 +0800 CST

VMware ESXi 虚拟机上的 Docker for Debian 经常崩溃

  • 772
本次赏金活动已结束。此问题的答案有资格获得+100声誉奖励。赏金宽限期将在2 小时后结束。 丹尼·贝克特想让更多人关注这个问题:
如果您能帮助解决 CPU 峰值/崩溃的原因,我们将不胜感激!谢谢

大约一个月前,我在 VMware ESXi 8.0U2 虚拟机(最新的 vSphere 版本)上安装了 Debian 12 上最新版本的 Docker。

我尝试让 VNC 运行,但其他优先事项占据了,所以现在我只是使用 Gnome 通过 VMware 远程控制台访问虚拟机。

它安装了最新版本的 VMware Tools:

$ sudo apt-get install open-vm-tools open-vm-tools-desktop
open-vm-tools is already the newest version (2:12.2.0-1+deb12u2).
open-vm-tools-desktop is already the newest version (2:12.2.0-1+deb12u2).

只有 1 个容器同时运行。我经常这样做docker image prune -f并且docker system prune

每当虚拟机“独立”运行时(我没有通过 Gnome 上的远程控制台连接到它),它就会像冠军一样运行,并且永远不会宕机。

每当我访问虚拟机并执行操作时,它都会随机挂起,我的“修复”是重新启动虚拟机。当容器挂起时,尝试从另一台机器访问在容器上运行的 nginx 服务器会导致我们的反向代理返回Error 503 Service Unavailable - No server is available to handle this request.

当执行此操作时,整个 Debian Docker 主机虚拟机完全锁定,不允许我单击/键入,并且屏幕冻结。我并没有做任何要求过高的事情。nano我通常只是在终端或其他东西中编辑文件。

有时我在虚拟机上什么也不做,我只是通过 VMware 远程控制台连接到它 - 它就会宕机。它以随机的时间间隔执行此操作,但我通常会在崩溃之前得到大约一两个小时的时间,但这似乎是随机变化的,有时我会得到几个小时 - 最近我在崩溃之前得到的时间越来越少。

如果我等待并且不重新启动虚拟机,那么远程控制台最终会在 5-10 分钟后恢复正常,屏幕会解冻,我可以再次输入。Docker 守护进程死亡。我没有使用 Docker Desktop。它已安装,但未设置为在引导/登录时自动启动。

有时崩溃时没有容器在运行。我在那里使用的容器是一个非常简单的网络服务器,只有我可以访问。

有时(但并非总是),即使在虚拟机挂起时从 VMware Remote Console 中对虚拟机发出“重新启动”命令,第一次也无法正常工作(但通常第二次可以正常工作):

在 vSphere 中,当虚拟机挂起时,我[有时?] 看到CPU 维持 100% 使用率!我已将 CPU 核心从 4 个减少到 2 个,因为它导致具有 6c 12t Xeon E5-1650V3 的 VMware 主机服务器上的 CPU 消耗非常高。该虚拟机具有 8GB RAM。

我的任何其他(Linux、FreeBSD 和 Windows)非 Docker 虚拟机都没有问题。

请问我该从哪里开始尝试解决此问题?

我的感觉是,这要么与 VMware Tools 要么与 Gnome 有关。每当我运行 Dockerfile 构建(但有时也不执行任何操作)时,我注意到这些进程通常会消耗非常高的 CPU:

  • qemu-system-x86_64
    • 这个也有很高的磁盘读/写,我想这在构建时是正常的
    • 将鼠标悬停在系统监视器中的进程上显示它与 Docker 相关:
  • gnome-shell
  • docker-scout
  • com.docker.backend

通常构建会成功完成,但这些进程在之后的一段时间内仍然会使用高 CPU - 有时会导致崩溃(当没有任何东西在构建时)。

我并不反对在全新安装的 Debian 上尝试一些东西,但我不相信如果我不改变我的设置中的任何其他内容,它会有帮助。

debian
  • 1 1 个回答
  • 253 Views

1 个回答

  • Voted
  1. Best Answer
    Danny Beckett
    2024-04-23T04:40:33+08:002024-04-23T04:40:33+08:00

    在这里。

    我们的设置是:物理机运行 ESXi > 有一个用于 Debian/Docker 的虚拟机 > 有一个用于 nginx 的容器。

    我最初误解了@GeraldSchneider 的评论- 我以为他的意思是卸载 Gnome Desktop(也许他也这么做了),但事实上,事后看来,卸载Docker Desktop 现在完全有意义。

    感谢@AB 的评论指出:

    • 存在两种不同的安装选项:Docker Desktop + Docker Engine
    • 与 Docker Engine 不同,Docker Desktop 通过 Debian VM 内的 QEMU 在 VM 内运行,导致嵌套虚拟化 - 这会导致主机 VM 频繁崩溃!

    我放弃了原来的安装并从头开始重新安装 Debian,遵循以下指南:

    • Docker 文档 > 在 Debian 上安装 Docker 引擎
    • Docker 文档 > Linux 安装后
      • 具体来说,配置默认日志记录驱动程序

    我也切换到了 KDE,现在 Docker Desktop 不再需要 Gnome 相关的东西了。只有时间才能证明一切,但响应时间似乎要快得多,而且还没有崩溃!🥳

    另请参阅(但不要遵循指南):

    • Docker 文档 > 在 Linux 上安装 Docker Desktop - 其中在几个地方指出:

      Linux 上的 Docker Desktop运行虚拟机 (VM)

    • Docker 文档 > Docker Desktop for Linux 常见问题解答 > 为什么 Docker Desktop for Linux 运行虚拟机?
    • Docker 文档 > 在 Debian 上安装 Docker Desktop
    • 1

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve