使用 Docker 中的现有文件共享/卷 - 与 Docker 组合用于 Windows WSL2
Use existing file sharing / volumes in Docker-compose with Docker for Windows WSL2
使用 Docker for Windows 10 pro Hyper-V 我可以正常使用文件共享。因此,在 Docker 桌面资源部分,我在我的 Windows 主机上添加了一个文件夹,如 K:\data
。这对我来说很好用很多年。
所以我目前的配置是:
- Windows 10 亲
- Windows 10 HOST 上的数据文件夹例如
K:\data
- Docker 对于 Windows 和 Hyper-V
- Docker 使用 2 Docker 图像组成(堆栈)文件:MySql 和 Jenkins。
- Docker 组件都访问驻留在 Windows 主机上的数据(通过卷规范)。
我正在研究是否可以为 Windows WSL2 切换到 Docker。然后我想继续使用 docker compose 文件和 2 个 Docker 容器。我想继续使用驻留在 Windows 主机上的数据。更具体地说,在 K:\data
.
是否可以从使用 Hyper-V 的 Windows 的 Docker 切换到 Windows WSL2 的 Docker 并且仍然使用驻留在 Windows 文件夹?
这不是一个重复的问题:我使用 Docker compose,所以我不想使用“docker 运行 -v 'host'”解决方案。在我的 docker 撰写文件中,我使用了例如以下行:
volumes:
- //k/data/spring-boot-app:/data/spring-boot-app
这个问题变得更加重要,因为自从新的 2.5+ 版本以来,Hyper-V 版本几乎无法在我的标准 Win10pro 上运行。 WSL2 立即生效。
我将此问题作为一个简单的用户问题提出,因此其他人可能会从中受益。我知道这个话题背后有一个世界。
很简单 - 只需切换到 WSL2 即可。 我尝试了 Docker Windows 2.4 和 3.0.0 (21-12 -2020) 版本。
让我用两个简单的步骤来证明和解释。注意卷在 docker-compose.yml 文件中的使用方式。
首先,刚刚在您的 Docker 桌面
中启用了 WSL2
1 - 使用简单应用程序进行演示:
version: '3'
services:
chatbot:
image: myusernameatdocker/chatbot:1.0-SNAPSHOT
ports:
- 8080:8080
volumes:
- /k/data/chatbot:/data/chatbot
我创建了一个简单的 Spring 启动应用程序。它在 Windows 上向我的日志文件写入 1 行。我可以完美阅读的那个文件。就在 k:\data\chatbot\myfile.txt.
2 - 具有 现有 MySql 环境的演示:
version: '3'
services:
mymysqldb:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root123
- MYSQL_DATABASE=mydatabase
- MYSQL_USER=johan
- MYSQL_PASSWORD=bladibladibla
volumes:
- /k/data/var/mysql-data:/var/lib/mysql
ports:
- "3306:3306"
我刚开始使用它,它运行良好。通常我必须先在第一次安装 Docker 时添加一个 k:\data 文件夹。现在我还没有那样做。
AND ... 使用 //k/data 也有效。所以,我用了很多年的MySql仍然有效。
我是否收到访问 Windows 文件系统缓慢的警告?是的。好的,就我而言,开发工作没什么大不了的。没关系,有效!
使用 Docker for Windows 10 pro Hyper-V 我可以正常使用文件共享。因此,在 Docker 桌面资源部分,我在我的 Windows 主机上添加了一个文件夹,如 K:\data
。这对我来说很好用很多年。
所以我目前的配置是:
- Windows 10 亲
- Windows 10 HOST 上的数据文件夹例如
K:\data
- Docker 对于 Windows 和 Hyper-V
- Docker 使用 2 Docker 图像组成(堆栈)文件:MySql 和 Jenkins。
- Docker 组件都访问驻留在 Windows 主机上的数据(通过卷规范)。
我正在研究是否可以为 Windows WSL2 切换到 Docker。然后我想继续使用 docker compose 文件和 2 个 Docker 容器。我想继续使用驻留在 Windows 主机上的数据。更具体地说,在 K:\data
.
是否可以从使用 Hyper-V 的 Windows 的 Docker 切换到 Windows WSL2 的 Docker 并且仍然使用驻留在 Windows 文件夹?
这不是一个重复的问题:我使用 Docker compose,所以我不想使用“docker 运行 -v 'host'”解决方案。在我的 docker 撰写文件中,我使用了例如以下行:
volumes:
- //k/data/spring-boot-app:/data/spring-boot-app
这个问题变得更加重要,因为自从新的 2.5+ 版本以来,Hyper-V 版本几乎无法在我的标准 Win10pro 上运行。 WSL2 立即生效。
我将此问题作为一个简单的用户问题提出,因此其他人可能会从中受益。我知道这个话题背后有一个世界。
很简单 - 只需切换到 WSL2 即可。 我尝试了 Docker Windows 2.4 和 3.0.0 (21-12 -2020) 版本。
让我用两个简单的步骤来证明和解释。注意卷在 docker-compose.yml 文件中的使用方式。
首先,刚刚在您的 Docker 桌面
中启用了 WSL21 - 使用简单应用程序进行演示:
version: '3'
services:
chatbot:
image: myusernameatdocker/chatbot:1.0-SNAPSHOT
ports:
- 8080:8080
volumes:
- /k/data/chatbot:/data/chatbot
我创建了一个简单的 Spring 启动应用程序。它在 Windows 上向我的日志文件写入 1 行。我可以完美阅读的那个文件。就在 k:\data\chatbot\myfile.txt.
2 - 具有 现有 MySql 环境的演示:
version: '3'
services:
mymysqldb:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root123
- MYSQL_DATABASE=mydatabase
- MYSQL_USER=johan
- MYSQL_PASSWORD=bladibladibla
volumes:
- /k/data/var/mysql-data:/var/lib/mysql
ports:
- "3306:3306"
我刚开始使用它,它运行良好。通常我必须先在第一次安装 Docker 时添加一个 k:\data 文件夹。现在我还没有那样做。
AND ... 使用 //k/data 也有效。所以,我用了很多年的MySql仍然有效。
我是否收到访问 Windows 文件系统缓慢的警告?是的。好的,就我而言,开发工作没什么大不了的。没关系,有效!