ddev 可以与 WSL 一起工作吗(Windows Linux 的子系统)?
Can ddev work with WSL (Windows Subsystem for Linux)?
作为一个在 Windows 机器上工作但享受 Ubuntu 作为工作环境的人,我想在 WSL 中使用 ddev。有办法吗?
2021 更新: DDEV 有 WSL2 install instructions.
(2018-11-15: 为 ddev v1.4.0 更新)
这很棘手,但可以做到。请注意,没有关于此的测试或性能结果,并且它不是受支持的技术。
请注意,WSL 实际上的行为类似于 linux 并使用 linux 二进制文件,因此您将使用 linux 版本的 ddev。
最大的问题是 docker 守护进程是 运行 在原生 Windows 下并且 WSL 有不同的文件系统布局,所以你必须在 WSL 端欺骗一切使用 Docker 守护程序能够在本机 windows.
中找到的路径
首先按照这篇优秀文章中的描述设置您的 WSL/Docker 环境:https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly#ensure-volume-mounts-work - 但使用 DOCKER_HOST=tcp://127.0.0.1: 2375 而不是在那里使用“本地主机”。
- 安装 ddev
确保所有项目都已经用 ddev rm -a
rm;已经 运行 或在本机 Windows 中停止的项目无法通过 WSL-land 的 ddev 访问。
您可能会在机器的 windows 端使用 Web 浏览器,因此将项目的主机名添加到Windows 与 ddev hostname <yourproject.ddev.local> 127.0.0.1
的一方
cd /c/Users//path/to/project(这是docker理解的路径。)
ddev 开始
使用浏览器访问项目。
基本上,通过这种技术,您使用的是 Docker 守护程序知道如何在本机 windows.
中遵循的路径
无论如何,它似乎适用于一个简单的例子。欢迎您提出意见,如果有人喜欢,我们将来可能会改进支持。
我让它在 WSL 中运行(当前版本为 1.5.1)。我正在使用 Docker 工具箱,因此 Docker4Windows 可能不同。
WSL 内部的常规设置(我正在使用 ubuntu)
- 安装docker(apt-get 安装docker.io)
- 通过
将默认 docker 机器证书复制到 WSL
cp /mnt/c/Users/[YOUR WINDOWS USER]/.docker/machine/machines/default/*.pem ~/.docker
- 在 WSL 中设置环境变量(例如在 ~/.bashrc 中)
export DOCKER_HOST=tcp://192.168.99.100:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker
可以通过 docker 工具箱中的 docker-machine.exe env
确定要使用的实际值!
此时您应该从 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 工具箱,docker 服务器的主机文件系统在 /c/
下可用。但是 运行 来自 WSL 的预期路径是 /mnt/c/
- 生成符号链接足以使其可用
docker-machine.exe ssh default 'sudo ln -s /c /mnt/c'
重新启动后必须重新运行此命令,或者您必须通过 bootlocal.sh
机制使更改永久生效。
使用来自 WSL 的 docker run --rm -i -t -v ${PWD}:/mnt ubuntu bash
测试您的映射。
安装 docker-compose,根据您的发行版,它已过时,需要替换为当前版本。
享受 ddev
作为一个在 Windows 机器上工作但享受 Ubuntu 作为工作环境的人,我想在 WSL 中使用 ddev。有办法吗?
2021 更新: DDEV 有 WSL2 install instructions.
(2018-11-15: 为 ddev v1.4.0 更新) 这很棘手,但可以做到。请注意,没有关于此的测试或性能结果,并且它不是受支持的技术。
请注意,WSL 实际上的行为类似于 linux 并使用 linux 二进制文件,因此您将使用 linux 版本的 ddev。
最大的问题是 docker 守护进程是 运行 在原生 Windows 下并且 WSL 有不同的文件系统布局,所以你必须在 WSL 端欺骗一切使用 Docker 守护程序能够在本机 windows.
中找到的路径首先按照这篇优秀文章中的描述设置您的 WSL/Docker 环境:https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly#ensure-volume-mounts-work - 但使用 DOCKER_HOST=tcp://127.0.0.1: 2375 而不是在那里使用“本地主机”。
- 安装 ddev
确保所有项目都已经用
ddev rm -a
rm;已经 运行 或在本机 Windows 中停止的项目无法通过 WSL-land 的 ddev 访问。您可能会在机器的 windows 端使用 Web 浏览器,因此将项目的主机名添加到Windows 与
的一方ddev hostname <yourproject.ddev.local> 127.0.0.1
cd /c/Users//path/to/project(这是docker理解的路径。)
ddev 开始
使用浏览器访问项目。
基本上,通过这种技术,您使用的是 Docker 守护程序知道如何在本机 windows.
中遵循的路径无论如何,它似乎适用于一个简单的例子。欢迎您提出意见,如果有人喜欢,我们将来可能会改进支持。
我让它在 WSL 中运行(当前版本为 1.5.1)。我正在使用 Docker 工具箱,因此 Docker4Windows 可能不同。
WSL 内部的常规设置(我正在使用 ubuntu)
- 安装docker(apt-get 安装docker.io)
- 通过 将默认 docker 机器证书复制到 WSL
cp /mnt/c/Users/[YOUR WINDOWS USER]/.docker/machine/machines/default/*.pem ~/.docker
- 在 WSL 中设置环境变量(例如在 ~/.bashrc 中)
export DOCKER_HOST=tcp://192.168.99.100:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker
可以通过 docker 工具箱中的 docker-machine.exe env
确定要使用的实际值!
此时您应该从 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 工具箱,docker 服务器的主机文件系统在 /c/
下可用。但是 运行 来自 WSL 的预期路径是 /mnt/c/
- 生成符号链接足以使其可用
docker-machine.exe ssh default 'sudo ln -s /c /mnt/c'
重新启动后必须重新运行此命令,或者您必须通过 bootlocal.sh
机制使更改永久生效。
使用来自 WSL 的 docker run --rm -i -t -v ${PWD}:/mnt ubuntu bash
测试您的映射。
安装 docker-compose,根据您的发行版,它已过时,需要替换为当前版本。
享受 ddev