Может ли 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)

  1. установить docker (apt-get установить docker.io)
  2. Копировать сертификаты докерного компьютера по умолчанию в WSL через

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

  1. настройте переменную среды внутри 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/

  1. Создание символической ссылки достаточно, чтобы сделать ее доступной docker-machine.exe ssh default 'sudo ln -s /c /mnt/c'

Эта команда должна быть выполнена повторно после перезагрузки, или вы должны сделать изменения постоянными через bootlocal.sh механизм.

Проверьте свое отображение с docker run --rm -i -t -v ${PWD}:/mnt ubuntu bash из WSL.

  1. Установите docker-compose, в зависимости от вашего дистрибутива он устарел и требует замены текущей версией.

  2. Наслаждайся ddev

Другие вопросы по тегам