Может ли ddev работать с WSL (подсистема Windows для Linux)? - PullRequest
0 голосов
/ 24 октября 2018

Как человек, работающий на машине с Windows, но наслаждающийся Ubuntu в качестве рабочей среды, я бы хотел использовать ddev в WSL .Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

У меня это работает (текущий 1.5.1) внутри WSL.Я использую Docker Toolbox, поэтому Docker4Windows может отличаться.

Общая настройка внутри WSL (я использую ubuntu)

  1. установить docker (apt-get install docker.io)
  2. копирование сертификатов докера по умолчанию в 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

exportDOCKER_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

Контейнеры еще не могут быть запущены, поскольку монтирование файловых системfail!

В 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, в зависимости от вашего дистрибутива он устарел и должен быть заменен текущей версией.

Enjoy ddev

0 голосов
/ 24 октября 2018

(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#ensure-volume-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 знает, как следовать в собственных окнах.

Во всяком случае, кажется, что работает с тривиальным примером.Ваши комментарии приветствуются, и мы сможем улучшить поддержку в будущем, если это понравится людям.

...