Docker 卷映射 + windows = 难以置信的慢?
Docker volume mapping + windows = incredible slow?
我目前正在尝试将 docker 容器中 运行 的 postgres 中的数据复制到我的 windows 主机。为此,我实现了一个 java 应用程序(也在 docker 容器中),它使用 postgres-jdbc 驱动程序及其 CopyManager,以便将特定数据复制到映射卷中的主机。
问题:当我将数据复制到映射的windows 目录时,它变得非常慢。 (写入 1 GB 的数据大约需要 40 分钟 - 没有卷映射只需 1 分钟)
Docker-撰写:
exportservice:
build: ./services/exportservice
volumes:
- samplePath:/export_data
我已经了解到这是一个已知问题,但我还没有找到合适的解决方案。
我的服务必须在基于 Windows 的生产环境中 运行。
那么解决这个问题的方法是什么? WSL2?
期待您的指教!
将 Windows 文件夹装入 Docker 容器总是很慢,无论您如何操作。 WSL2 在这方面甚至比 WSL1 慢。
最好的解决方案是安装 WSL2,将所有项目文件复制到 Linux 文件系统(安装在 Windows 中的 \wsl$\<distro>\
),运行 容器来自在那里并相应地安装 Linux 目录。这会绕过任何 Windows 文件交互。
我写了一本 Docker for Web Developers 书籍和视频课程,因为我找不到很好的入门教程来解释如何创建本地开发环境。它包括 Hyper-V 和 WSL2 说明和建议。使用折扣代码 dock30
享受 30% 的折扣。
使用 WSL2 而不是 WSL 并使用 Linux 文件系统。但是您也可以减少写入周期以减少写入开销。这可以通过在 Java.
中使用 BufferedWriter 来实现
我目前正在尝试将 docker 容器中 运行 的 postgres 中的数据复制到我的 windows 主机。为此,我实现了一个 java 应用程序(也在 docker 容器中),它使用 postgres-jdbc 驱动程序及其 CopyManager,以便将特定数据复制到映射卷中的主机。
问题:当我将数据复制到映射的windows 目录时,它变得非常慢。 (写入 1 GB 的数据大约需要 40 分钟 - 没有卷映射只需 1 分钟)
Docker-撰写:
exportservice:
build: ./services/exportservice
volumes:
- samplePath:/export_data
我已经了解到这是一个已知问题,但我还没有找到合适的解决方案。 我的服务必须在基于 Windows 的生产环境中 运行。 那么解决这个问题的方法是什么? WSL2?
期待您的指教!
将 Windows 文件夹装入 Docker 容器总是很慢,无论您如何操作。 WSL2 在这方面甚至比 WSL1 慢。
最好的解决方案是安装 WSL2,将所有项目文件复制到 Linux 文件系统(安装在 Windows 中的 \wsl$\<distro>\
),运行 容器来自在那里并相应地安装 Linux 目录。这会绕过任何 Windows 文件交互。
我写了一本 Docker for Web Developers 书籍和视频课程,因为我找不到很好的入门教程来解释如何创建本地开发环境。它包括 Hyper-V 和 WSL2 说明和建议。使用折扣代码 dock30
享受 30% 的折扣。
使用 WSL2 而不是 WSL 并使用 Linux 文件系统。但是您也可以减少写入周期以减少写入开销。这可以通过在 Java.
中使用 BufferedWriter 来实现