[英]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.