macos - 带有主机网络的 Docker 容器的网络性能非常慢

标签 macos networking docker mqtt paho

我遇到了 Docker 容器和主机网络之间网络性能缓慢的问题。我在 Docker 的论坛上问过这个问题,但到目前为止没有收到任何答案。

问题

设置:同一本地网络上的两台 Mac;第一个运行 MQTT 代理(mosquitto);第二个运行 Docker for Mac。两个 C++ 程序在第二台 Mac 上运行,并使用 Paho MQTT C 库通过 MQTT 代理(在第一台 Mac 上)多次交换数据。

原生运行:当我原生运行这两个 C++ 程序时,网络性能和预期一样出色。这些程序是使用 XCode 7.3 构建的。

Docker 运行:当我在 Docker 中运行其中一个或两个 C++ 程序时,网络性能急剧下降,大约比本地运行慢 30 倍。 Docker 镜像基于 ubuntu:latest,程序由 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609 构建。

我尝试使用主机网络(Docker 运行中的 --network="host"),但没有帮助。我还尝试在第二台 Mac 上运行 MQTT 代理(以便代理和容器在同一主机上运行);问题依然存在。我的工作 LAN 和家庭网络都存在此问题。

理论上,可能是因为 C++ 程序在 Docker 容器中通常很慢。但我怀疑情况是否如此,因为根据我的经验,Docker 中 C++ 代码的总体性能与本地环境中的速度差不多。

问题

这个问题的原因可能是什么? Docker中有没有可以解决这个问题的设置?

最佳答案

您的问题听起来与 this open issue 非常相似在 Docker for Mac 存储库上。不幸的是,似乎没有已知的解决方案,但那里的讨论可能有用。我的 personal guess目前,该错误存在于专门用于 Docker for Mac 的 hyperkit 虚拟化附近。

就我而言,奇怪的是,我能够 bypass this issue通过使用不同的物理路由器,但我不知道它为什么会起作用。遗憾的是,这并不是真正的“解决方案”。

我讨厌这不是一个很好的答案,但我至少想在未决问题中分享讨论。祝你好运,让我们随时了解情况。

关于macos - 带有主机网络的 Docker 容器的网络性能非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557368/

相关文章:

macos - 如何使用 JXA 单击 UI 元素

c# - OSX 上的 Visual Studio Code 如何导入 sln/csproj 并运行?

VB.Net 仅使用 TCP 获取 1 个图像

docker: fatal error 无法创建锁定文件:错误的文件描述符(9)

macos - 在 Mac OSX 上,如何将脚本文件与终端相关联,以便双击图标启动终端?

python - 查找我的套接字的公共(public) IP 地址?

ios - 如何在 Swift 中访问 JSON 响应中的特定数据

docker - ansible.errors.AnsibleError : Unable to create local directories(/. ansible/tmp) : [Errno 13] Permission denied: b'/. ansible'

管理开发环境中mysql无法启动

java - 在 Mac OSX 上从 Java 启动 AppleScript 脚本