Может ли ddev работать с WSL (подсистема Windows для Linux)?
Как человек, работающий на машине с Windows, но наслаждающийся Ubuntu в качестве рабочей среды, я бы хотел использовать ddev в WSL. Есть способ сделать это?
1 ответ
(2018-11-15: обновлено для ddev v1.4.0) Это довольно сложно, но это можно сделать. Обратите внимание, что здесь нет тестов или результатов производительности, и это не поддерживаемый метод.
Обратите внимание, что WSL на самом деле ведет себя как linux и использует бинарные файлы linux, поэтому вы будете использовать версию ddev для linux.
Самая большая проблема заключается в том, что демон docker работает под собственной Windows, а WSL имеет разную структуру файловой системы, поэтому вам нужно как-то обмануть все на стороне WSL, чтобы использовать пути, которые демон Docker сможет найти в собственных окнах.
Начните с настройки среды WSL/Docker, как описано в этой замечательной статье: https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly mounts -work - НО используйте DOCKER_HOST=tcp://127.0.0.1:2375 вместо использования там "localhost".
Установите ddev, используя инструкции Linux.
- Убедитесь, что все проекты уже выполнены
ddev rm -a
; ddev из WSL-land не может получить доступ к проектам, уже запущенным или остановленным в собственной Windows. - Вы, вероятно, собираетесь использовать веб-браузер на своей стороне Windows, поэтому добавьте имя хоста вашего проекта на стороне Windows с помощью
ddev hostname <yourproject.ddev.local> 127.0.0.1
- cd /c/Users// путь / к / проекту (это докер пути понимает.)
- ddev start
- Посетите проект с вашим браузером.
По сути, с помощью этой техники вы используете пути, которым демон Docker знает, как следовать в собственных окнах.
Во всяком случае, кажется, работает с тривиальным примером. Ваши комментарии приветствуются, и мы сможем улучшить поддержку в будущем, если это понравится людям.
У меня это работает (текущий 1.5.1) внутри WSL. Я использую Docker Toolbox, поэтому Docker4Windows может отличаться.
Общая настройка внутри WSL (я использую Ubuntu)
- установить docker (apt-get установить docker.io)
- Копировать сертификаты докерного компьютера по умолчанию в 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
экспортировать DOCKER_TLS_VERIFY = 1
export DOCKER_CERT_PATH = ~ /.docker
Фактические значения для использования могут быть определены с помощью docker-machine.exe env
из панели инструментов докера!
На этом этапе вы должны получить полный вывод docker version
(не забудьте перезапустить вашу оболочку, чтобы фактически загрузить измененную среду)
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/
- Создание символической ссылки достаточно, чтобы сделать ее доступной
docker-machine.exe ssh default 'sudo ln -s /c /mnt/c'
Эта команда должна быть выполнена повторно после перезагрузки, или вы должны сделать изменения постоянными через bootlocal.sh
механизм.
Проверьте свое отображение с docker run --rm -i -t -v ${PWD}:/mnt ubuntu bash
из WSL.
Установите docker-compose, в зависимости от вашего дистрибутива он устарел и требует замены текущей версией.
Наслаждайся ddev