我已经读到在 Windows 上安装共享卷时性能会受到重大影响。这与仅说 docker 卷内的 postgres DB(不与主机操作系统共享)或从/向平面文件读取/写入的速率相比如何?
有没有人找到任何具体的数字?我认为如果只是为了磁盘 IO 性能,我的用例甚至可以接受 4 倍的减速...我的印象是挂载 + 共享卷是 明显变慢在windows上...所以我想知道是否在前面分享 组件有助于将问题改善到可接受的范围内。
此外,如果我将 Postgres 留在裸机上,我的所有 docker 应用程序还能以这种方式访问 Postgres 吗? (这可能是我想像的首选——我已经看到关于保持裸机的读/写速度提高 4 倍的报告)——但我仍然需要知道......因为我的应用程序也处理大量平面文件的复制/读取/移动。 ..所以需要知道什么是最好的。
例如,如果共享卷真的很糟糕,而不是只保留在容器上,那么我可以选择通过网络推送文件以避免需要共享安装卷作为瓶颈......
感谢您的任何见解
最佳答案
您只需为绑定(bind)安装的主机目录支付此性能成本。命名的 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
访问它。 .这在 From inside of a Docker container, how do I connect to the localhost of the machine? 中有详细讨论。 .如果您使用的是 Docker 桌面应用程序,并且您将卷用于:
关于windows - 使用 Windows 上的 docker 卷(仅在 docker 容器内)或使用主机操作系统安装/共享卷的读/写性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62493402/