4

作为一个在 Windows 机器上工作但喜欢将 Ubuntu 作为工作环境的人,我想在WSL中使用 ddev 。有没有办法做到这一点?

4

2 回答 2

5

2021 年更新: DDEV 有WSL2 安装说明


(2018-11-15:针对 ddev v1.4.0 进行了更新)这是非常微妙的,但可以做到。请注意,对此没有测试或性能结果,并且它不是受支持的技术。

请注意,WSL 实际上的行为类似于 linux 并使用 linux 二进制文件,因此您将使用 ddev 的linux版本。

最大的问题是 docker 守护进程在本机 Windows 下运行,而 WSL 具有不同的文件系统布局,因此您必须在 WSL 端欺骗所有内容以使用 Docker 守护进程能够在本机 Windows 中找到的路径。

  • 首先按照这篇出色的文章中的描述设置您的 WSL/Docker 环境:https ://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawless#ensure-volume- mounts-work - 但使用 DOCKER_HOST=tcp://127.0.0.1:2375 而不是在那里使用“localhost”。

  • 使用Linux 说明安装 ddev 。

  • 确保所有项目都已使用ddev rm -a; ddev 无法从 WSL-land 访问已在本机 Windows 中运行或停止的项目。

  • 您可能会在机器的Windows端使用 Web 浏览器,因此在Windows端添加项目的主机名ddev hostname <yourproject.ddev.local> 127.0.0.1

  • cd /c/Users//path/to/project (这是 docker 理解的路径。)

  • ddev 启动

  • 使用浏览器访问该项目。

基本上,通过这种技术,您使用的是 Docker 守护程序知道如何在本机窗口中遵循的路径。

无论如何,它似乎适用于一个简单的例子。欢迎您提出意见,如果人们喜欢,我们将来可能会改进支持。

于 2018-10-24T17:01:06.593 回答
1

我让它在 WSL 中工作(当前为 1.5.1)。我正在使用 Docker Toolbox,所以 Docker4Windows 可能会有所不同。

WSL 内部的一般设置(我使用的是 ubuntu)

  1. 安装 docker (apt-get install docker.io)
  2. 通过将默认 docker 机器证书复制到 WSL

cp /mnt/c/Users/[YOUR WINDOWS USER]/.docker/machine/machines/default/*.pem ~/.docker

  1. 在 WSL 中设置环境变量(例如在 ~/.bashrc 中)

导出 DOCKER_HOST=tcp://192.168.99.100:2376

导出 DOCKER_TLS_VERIFY=1

导出 DOCKER_CERT_PATH=~/.docker

要使用的实际值可以通过docker-machine.exe envdocker 工具箱确定!

此时你应该得到一个完整的输出docker version(不要忘记重新启动你的 shell 以实际加载修改后的环境)

Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.4
 Git commit:        e68fc7a
 Built:             Fri Oct 19 19:43:14 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:28:38 2018
  OS/Arch:          linux/amd64
  Experimental:     false

容器还不能启动,因为文件系统的挂载会失败!

使用 Docker Toolbox,docker 服务器在/c/. 但是从 WSL 运行的预期路径是/mnt/c/

  1. 生成符号链接足以使其可用docker-machine.exe ssh default 'sudo ln -s /c /mnt/c'

此命令必须在重新启动后重新运行,否则您必须通过该bootlocal.sh机制使更改永久化。

使用 WSL 测试您的映射docker run --rm -i -t -v ${PWD}:/mnt ubuntu bash

  1. 安装 docker-compose,根据您的发行版,它已过时,需要替换为当前版本。

  2. 享受 ddev

于 2019-01-10T10:29:03.630 回答