使用 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 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 文件系统缓慢的警告?是的。好的,就我而言,开发工作没什么大不了的。没关系,有效!