簡體   English   中英

使用 windows 上的 docker 卷(僅在 docker 容器內部)或與主機操作系統安裝/共享卷時,讀/寫性能是否更好?

[英]Is read/write performance better with docker volumes on windows (inside of a docker container only) or a mounted / shared volume with host OS?

我已經讀到在 windows 上安裝共享卷時性能會受到重大影響。 這與只說 docker 卷(不與主機操作系統共享)或從/向平面文件讀取/寫入的速率相比如何?

有沒有人找到任何具體的數字? 如果僅用於磁盤IO性能,我認為即使是 4 倍的減速也可以接受幫助將事情改善到可接受的范圍內。

此外,如果我將 Postgres 留在裸機上,我的所有 docker 應用程序仍能以這種方式訪問 Postgres 嗎? (這可能是我想像的首選——我已經看到關於保持裸機讀/寫速度提高 4 倍的報告)——但我仍然需要知道......因為我的應用程序也處理大量平面文件的復制/讀取/移動。 ..所以需要知道什么是最好的。

例如,如果共享卷真的很糟糕,而不是只保留在容器上,那么我可以選擇通過網絡推送文件以避免需要共享安裝卷作為瓶頸......

感謝您的任何見解

您只需為綁定安裝的主機目錄支付此性能成本。 命名為 Docker 卷或 Docker 容器文件系統將快得多。 標准 Docker Hub 數據庫映像配置為始終使用卷進行存儲,因此在這種情況下您應該使用命名卷。

docker volume create pgdata
docker run -v pgdata:/var/lib/postgresql/data -p 5432:5432 postgres:12

您也可以直接在主機上運行 PostgreSQL。 在使用 Docker 桌面應用程序的系統上,您可以通過特殊的主機名host.docker.internal訪問它。 這在從 Docker 容器內部進行了詳細討論,如何連接到機器的本地主機? .

如果您使用 Docker 桌面應用程序,並且您將卷用於:

  • 不透明的數據庫存儲,如 PostgreSQL 數據:使用命名卷; 它會更快,即使您在主機上確實有數據,您也無法有效地直接訪問數據
  • 注入單個配置文件:使用綁定掛載; 這些通常只在啟動時讀取一次,因此沒有太多的性能成本
  • 導出日志文件:使用綁定掛載; 如果有足夠的日志 I/O 成為性能問題,您可能正在積極調試
  • 您的應用程序源代碼:根本不使用卷,運行映像中的代碼,或使用本機主機開發環境

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM