[英]Is there a workaround to use the host's network in Docker for Mac?
[英]Very slow network performance of Docker containers with host's network
我遇到了 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 代理(以便代理和容器在同一主机上运行); 问题仍然存在。 我的工作局域网和家庭网络都存在此问题。
理论上,可能是 C++ 程序在 Docker 容器中通常很慢。 但我怀疑情况是否如此,因为根据我的经验,C++ 代码在 Docker 中的总体性能与在本机环境中一样快。
这个问题的原因可能是什么? Docker 中是否有任何设置可以解决此问题?
我怀疑容器的默认内存和 CPU 分配对于您尝试实现的网络性能可能不是最佳的。
$ docker stats node1 node2 CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O node1 0.07% 796 KB/64 MB 1.21% 788 B/648 B node2 0.07% 2.746 MB/64 MB 4.29% 1.266 KB/648 B
然后,您可能希望修改 docker run 可用的各种资源分配参数。
--mtu=BYTES
设置--mtu=BYTES
值的 MTU 以匹配系统接口的 MTU 值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.