3

Я изо всех сил пытался решить эту проблему в течение нескольких дней.

Попытка реализовать настройку WSL и VirtualBox в Windows 10 Pro. Причины не имеют отношения к проблеме, но использование Hyper-V не вариант. Попытка реализовать в соответствии с:

https://www.paraesthesia.com/archive/2018/09/20/docker-on-wsl-with-virtualbox-and-docker-machine/

Будь я использую Docker Toolbox или просто Docker docker-machine, результаты неизменно одинаковы. "Запуск от имени администратора" просто создает виртуальные машины под учетной записью администратора, чего я тоже не хочу. Пробовал rm и воссоздал виртуальные машины несколько десятков раз.

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

(по умолчанию) Ожидание IP ...

Ошибка создания машины: ошибка в драйвере при создании машины: слишком много попыток в ожидании доступности SSH. Последняя ошибка: превышено максимальное количество повторов (60)

Это все еще создает машину, но state timeout:

NAME      ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER   ERRORS
default            virtualbox   Timeout

Я делаю docker-machine env default и получаю следующее:

Error checking TLS connection: ssh command error:
command : ip addr show
err     : exit status 255
output  :

Виртуальная машина обнаруживается в VirtualBox и имеет тот же сетевой адаптер, что и другие мои рабочие виртуальные машины (в том смысле, что они могут подключаться к Интернету) за исключением "Адаптера 2". Это не на других моих виртуальных машинах:

Docker VM имеет следующее в терминале:

Кроме того, я прошел через следующие предложения, и ничто не решило проблему. Решения обычно включают воссоздание виртуальной машины.

Кроме того, мой хост находится в сети 192.168.1.x.

https://github.com/docker/toolbox/issues/457

https://stackoverflow.com/questions/35958619/docker-terminal-waiting-for-an-ip

https://github.com/docker/machine/issues/3268

https://github.com/docker/machine/issues/4053

ОБНОВЛЕНИЕ:

VBoxManager.exe и docker-machine.exe находятся в одном каталоге.

1 ответ1

2

TL; DR "Ожидание IP" отображается, когда docker-machine хочет подключить гостевую машину с хоста. Возможные причины: в брандмауэре заблокирована только хост-сеть, отключен DHCP, неправильная настройка IPv4 и т.д.

  • Требования:

    • Intel VT-x включен в BIOS
    • Windows 10 64 бит с последней версией Ubuntu (или другого дистрибутива GNU/Linux), установленной в WSL
    • 64-разрядная версия VirtualBox и Hyper-V отключены
    • Docker Machine 64 бит для Windows (имя файла docker-machine-Windows-x86_64.exe)
    • Предварительные знания о сети и док-машине
  • Среды:

    • VirualBox Guest (также хост Docker): облегченный образ GNU/Linux для boot2docker для Docker
    • VirtualBox Host: Windows 10 64 бит
    • Docker Client: docker-ce в Ubuntu WSL
    • Используемый диапазон IPv4 в интерфейсе Host-Only: от 192.168.99.0 до 192.168.99.255, т. Е. 192.168.99.0/24 с включенным DHCP. Вы можете изменить это как хотите, но DHCP важен для Docker Machine

Я перешел по ссылке на статью, приведенную в вопросе. Установите клиент docker-ce в Ubuntu WSL с помощью следующих команд:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get install docker-ce
docker run hello-world
# you’ll get a message like this:
# docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

Теперь вернитесь к хост-машине Windows 10. Выполните эти шаги соответственно:

  • Загрузите Docker Machine 64 bit для Windows. Скопируйте файл docker-machine-Windows-x86_64.exe в папку установки VirtualBox или добавьте переменную среды VBOX_INSTALL_PATH чтобы исполняемый файл докера мог найти VBoxManage.exe .

  • Добавьте виртуальный интерфейс только для хоста из окна VirtualBox Manager. Затем настройте все необходимые конфигурации IPv4 в этом окне или через панель управления сетью ncpa.cpl . Можно использовать любые частные адреса IPv4 . Вот скриншоты:

  • В панели управления сетью:

ipv4-сети на панели управления

  • В окне VirtualBox Manager:

хост-только-сеть конфигурация

  • Разрешить 192.168.99.0/24 диапазон IPv4 для входящих и исходящих соединений в брандмауэре Windows. Также разрешите VBoxHeadless.exe в брандмауэре Windows для NTP-подключения в гостевой ОС. Затем выполните эту команду, чтобы создать виртуальную ОС docker-host в VitualBox, с помощью следующей команды: docker-machine.exe create docker-host , он установит и настроит гостевую ОС VM.

  • Запустите команду docker-machine.exe env docker-host чтобы показать настроенные среды. Скопируйте эти среды в мире WSL или скопируйте в файл .bash_profile следующим образом (переменные изменятся):

# These are example. Don't copy and paste.
export DOCKER_HOST=192.168.99.104:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/mnt/c/users/username/.docker/machine/machines/docker-host
export DOCKER_MACHINE_NAME=docker-host
export COMPOSE_CONVERT_WINDOWS_PATHS=true

В WSL Ubuntu попробуйте docker run hello-world . Используйте docker-machine.exe stop docker-host чтобы остановить виртуальную машину boot2docker. Если брандмауэр Windows блокирует сетевые подключения, разрешите VirtualBox.exe , VirtualBoxVM.exe и VBoxHeadless.exe в правилах исходящего трафика брандмауэра Windows. Также разрешите сетевые IPv4-адреса только для хоста с помощью следующих команд:

New-NetFirewallRule -DisplayName "Host_Only_Network" -Name "Host_Only_Network_In" -Direction Inbound -RemoteAddress 192.168.99.0/24 -Action Allow
New-NetFirewallRule -DisplayName "Host_Only_Network" -Name "Host_Only_Network_Out" -Direction Outbound -RemoteAddress 192.168.99.0/24 -Action Allow

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .