Докер для Windows не работает

Я установил Docker Toolbox сейчас, и я получаю ошибку для всего:

Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectExtcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

вывод docker version:

Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      windows/amd64
Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

Но виртуальная машина работает под VirtualBox. Я искал везде, но не могу найти решение.

ОБНОВЛЕНИЕ 1: Я использую Windows 8.1, а также пытался запустить через Kinematic также.

ОБНОВЛЕНИЕ 2: Все работало как шарм, когда я попробовал Virtualbox Test Build 5.0.3 или более поздней версии. Вы можете скачать здесь: https://www.virtualbox.org/wiki/Testbuilds

Ответ 1

Просто запустите:

"C:\Program Files\Docker Toolbox\docker-machine" ls

введите имя машины, а затем запустите:

"C:\Program Files\Docker Toolbox\docker-machine" env <MACHINE_NAME_HERE> --shell=[cmd|powershell]

и вы должны получить что-то вроде этого:

"C:\Program Files\Docker Toolbox\docker-machine" env default --shell=cmd
set DOCKER_TLS_VERIFY=1
set DOCKER_HOST=tcp://192.X.X.X:2376
set DOCKER_CERT_PATH=C:\Users\X\.docker\machine\machines\default
set DOCKER_MACHINE_NAME=default
# Run this command to configure your shell:
# copy and paste the above values into your command prompt

Я также получаю сообщение об ошибке open C:\Users\X\.docker\machine\machines\default\server.pem: The system cannot find the file specified.  и решил его, обновив мою VirtualBox до версии 5.0.3 (из ночные сборки)

Длинная версия:

У меня возникла такая же проблема, и после этого и в разделе "Использование Docker из командной строки командной строки Windows (cmd.exe)" из руководства по установке поставьте меня в правильном направлении

В основном, как работает докер, команды "докер" передаются в службу докеров (работает на порте 2375). Когда вы запускаете докер из хоста Windows, служба фактически выполняется на хосте linux, созданном докере (вы можете увидеть его, открыв виртуальный бокс ui).

Обычный поток следующий:

  • Создана машина
  • default
  • стартер (kinamatic/ "Docker Quickstart Terminal" /cmd ) машины ждет загрузки устройства, получает его IP-адрес и устанавливает порт linux ip: port в качестве служебного адреса (вместо 127.0.0.1:2375) в нескольких переменных enviremnt/powershell
  • с этого момента все команды docker ... отправляются на хост linux, и все работает почти как родной linux

Проблема в том, что есть некоторая проблема с настройкой машины (моя догадка о новом виртуальном ящике, но я не уверен, и у меня есть время, чтобы в нее разобраться). Вы можете увидеть, что командой runnung ls и обратите внимание, что (по крайней мере, в моем случае) состояние машины является "тайм-аутом" и нет URL-адреса, в отличие от вывода, показанного в руководстве.

Это приводит к тому, что значения enviorment не устанавливаются, а команды docker ... терпят неудачу.

Помимо запуска команды, вы также можете запустить Docker Quickstart Terminal, который делает то же самое, но с sh shell

Что касается ошибки сертификата, я попытался регенерировать сертификаты с виртуальной машины, используя:

/usr/local/bin/generate_cert --overwrite --host=default,127.0.0.1,10.0.2.15,192.168.99.100 --ca=/var/lib/boot2docker/tls/ca.pem --ca-key=/var/lib/boot2docker/tls/cakey.pem --cert=/var/lib/boot2docker/tls/server.pem --key=/var/lib/boot2docker/tls/serverkey.pem

У меня возникла "ошибка протокола" при попытке скопировать сертификат на хост-машину, что напомнило мне старую виртуальную папку с общими папками, поэтому это может быть не проблема с докером, а с виртуальным боксом - я обновился до последней ночи версия (5.0.3-102224), восстановила изображение по умолчанию и, похоже, решила его. Поскольку Windows 10 официально не поддерживается ни докерем, ни виртуальным боксом, я не уверен, что это то же самое, что вызывает ошибку сертификата. В любом случае можно попытаться скопировать сертификаты с виртуальной машины (у вас есть пути в блоке кода) в ваш локальный каталог пользователя (он отображается в/c/Users/X/на виртуальной машине)

Ответ 2

Следующие работали для меня (Docker Toolbox 1.8.1b и Windows 7). Это упрощенная версия того, что @baptiste-gaillard изложено в комментариях выше. Краткий ответ: используйте VirtualBox 5.03 или более позднюю версию с помощью get-go.

  • Загрузите VirtualBox 5.03 (ночная сборка на момент публикации) и добавочный пакет.
  • Перезагрузите ноутбук. (Очищает запущенные файлы VirtualBox.)
  • Установите VirtualBox 5.03 и пакет обновления 5.03.
  • Удалить виртуальную машину по умолчанию полностью (удалить файлы).
  • Запустите ярлык быстрого запуска Docker Quickstart для создания виртуальной машины по умолчанию.

Quickstart script, похоже, лучше работает с VirtualBox 5.03 в отношении создания необходимых ключей TLS.

Ответ 3

Имел ту же проблему, что и вы, и только что исправил ее несколько часов назад.

Все, что нужно сделать, это отключить Hyper-V. Запустите командную строку с правами администратора и выполните следующую команду:

bcdedit /set hypervisorlaunchtype off

Перезагрузите компьютер, откройте виртуальный бокс и удалите по умолчанию vm после перезапуска, вернитесь к терминалу быстрой загрузки docker и введите следующее:

docker run hello-world

и все готово! Надеюсь, что он решает вашу проблему.

Ответ 4

это работает для меня

1) сначала запустите инструмент командной строки и получите IP-адрес устройства, запустив

команда docker-machine ls

2) Повторно сгенерировать сертификаты докеры-регенераторы-сертификаты

3) Задайте переменные evn вручную, в моем случае расположение сертификатов было другим.

установить DOCKER_TLS_VERIFY = 1

установить DOCKER_HOST = tcp://machine_IP: 2376

установить DOCKER_CERT_PATH = C:\Users\X.docker\machine\certs

установить DOCKER_MACHINE_NAME = по умолчанию

Теперь запустите версию docker

Вот результат в моем случае

Клиент:  Версия: 1.8.1  Версия API: 1.20  Версия Go: go1.4.2  Git commit: d12ea79  Построено: Чт 13 авг 02:49:29 UTC 2015  OS/Arch: windows/amd64

Сервер:  Версия: 1.8.1  Версия API: 1.20  Версия Go: go1.4.2  Git commit: d12ea79  Построено: Чт 13 авг 02:49:29 UTC 2015  OS/Arch: linux/amd64

Ответ 5

Установка Docker Toolbox (в 1.8.x) настроит по умолчанию ваш Docker Daemon на использование безопасного соединения через протокол TLS (версия 1.8).

Если вы использовали более старую версию демона, которая не была защищена, это означает как минимум две вещи:  - номер порта изменился с 2375 до 2376  - вашему демону-клиенту необходимо предоставить сертификат для связи с вами, сервером/сервером докеров.

Таким образом, ответ sandiindia указывает переменные окружения, которые точно соответствуют клиенту докера, хорошая конфигурация для подключения к серверу/движку докеров:

#You're using a TLS secured daemon : 
set DOCKER_TLS_VERIFY=1

# Precise the Docker Host IP and port, the TLS default is 2376
set DOCKER_HOST=tcp://*<docker_host_IP>*:2376

# The paths to the certificate and client key needed to authenticate to the daemon
# You should have 3 files in this directory : ca.pem, cert.pem and key.pem 
# In my case the default path looks like : 
set DOCKER_CERT_PATH=C:\Users\*<username>*\.docker\machine\machines\default

#the name of your Docker Host VM : 
set DOCKER_MACHINE_NAME=default

Документация docker о конфигурации TLS: https://docs.docker.com/articles/https/

Я надеюсь, что это поможет;)

Ответ 6

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

Оказывается, несколько шагов инициализации отсутствовали, как указано в принятом ответе выше. Почему установка Docker по умолчанию уже не выполнялась? У меня также отсутствовали сертификаты. Итак, я удалил все и перезапустил с нуля. Однако после завершения установки на этот раз не открывайте терминал быстрого запуска Docker, откройте Kitematic вместо первой инициализации для вас.

Kitematic создал для меня сертификаты, установил отсутствующие переменные env, а затем открыл терминал быстрого запуска Docker. Я набрал docker run hello-world, затем docker version, и на этот раз он работал, как ожидалось, никаких сообщений об ошибках.

Обратите внимание, что это не сработало, когда я впервые открыл терминал быстрого запуска.

Я тестирую Docker внутри экземпляров VMWare 10, и я смог дублировать эту проблему и ее решение (обходное решение) в каждом случае.

Надеюсь, это поможет.

Ответ 7

Я исправил свою проблему, просто удалив виртуальную машину по умолчанию в диспетчере VirtualBox, перезагрузив компьютер (на всякий случай), а затем снова запустил терминал быстрого запуска Docker. Что это.

Docker 1.8.2 и Virtual Box 5.0.4

Ответ 8

Close the virtual machine from Virtual Box (you don't have to delete it)
Close Kitematic
Close Docker Quickstart Terminal

Теперь выполните следующее:

Open Kitematic
Open Docker Quickstart Terminal

Его важный не открытый терминал быстрого запуска Docker перед Kitematic, поскольку Kitematic будет инициализировать вещи для терминала быстрого запуска Docker

Мне не нужно было запускать какую-либо командную строку.

Надеюсь, это поможет кому-то...

Ответ 9

  • Обновление до последнего виртуального окна выше 5.0.3
  • Перезагрузите систему.
  • открыть виртуальный блок и удалить виртуальную машину по умолчанию
  • откройте терминал быстрого запуска докера
  • run docker run hello-world

И все готово.

Ответ 10

Удалить и удалить все старые v.machines на вашем ноутбуке: 1. Откройте VirtualBox, щелкните правой кнопкой мыши "default", "Удалить", "Удалить все файлы". 2. Командная строка (Запуск от имени администратора) > docker-machine rm default

Удалите Virtualbox, панель инструментов Docker и Git. Перейдите в c:\Users\Vinita и удалите dirs..docker и .Virtualbox CClean файлы и реестр. Reboot.

Выполняется очистка.

я. Загрузите последнюю версию инструментов Docker для окон (1.10.2) из ​​Docker Toolbox Щелкните правой кнопкой мыши загруженный файл и "Запуск от имени администратора". Это установит - Docker Quickstart, Kitematic и Virtualbox.

II. Загрузите последнюю тестовую сборку VirtualBox (5.01.15-105696-win.exe) из Тестирование - Oracle VM VirtualBox. Запустите еще один администратор.

(Вы можете игнорировать любые предупреждения и перезаписывать на уже установленном Docker VirtualBox).

До сих пор ничего необычного. Мы просто установили программное обеспечение с правами администратора. Теперь Панель управления > Центр управления сетями и общим доступом > Изменение настроек адаптера: Щелкните правой кнопкой мыши VirtualBox Host-Only Network # 2 для свойств. Проверкa > Драйвер сетевого интерфейса VirtualBox NDIS6.. (Если он уже установлен, снимите флажок и проверьте еще раз.)

Вы закончили. Это единственное исправление, которое мы использовали!

Как Kitmatic, так и Docker Quickstart должны работать сейчас.

Щелкните правой кнопкой мыши на Kitematic и запустите как admin в первый раз. Протестировано в Windows 10.

Ответ 11

С Docker 1.8.1d была та же проблема, удалив 1.8.1c. В конечном итоге исправлена ​​проблема, установив последнюю версию Virtual Box (5.0.18), перезагрузив ее при запуске и запуске Kitematic. Сначала у Kitematic возникают проблемы и вы можете удалить и переустановить виртуальную машину, которую я сделал. После этого мой терминал QuickStart был в порядке.

Ответ 12

Это произошло несколько раз для меня в Windows 10 с VirtualBox 5.0.14.

Кажется, что это связано с тем, что вы не корректно закрываете VirtualBox (я считаю) - например, выключение питания!

  • Завершение работы Docker VM

  • Закрыть Kitematic

  • Запустите терминал быстрого запуска Docker

  • Введите терминал:

docker-machine.exe -D ls

  1. Запустите Kitematic. VM показывается.

Если это не сработает, повторите попытку 1-3 и на этот раз попытайтесь восстановить . сертификаты Затем выполните шаг 4.

Одна вещь, которая нечетна, заключается в том, что в терминале docker images не перечисляется их, но говорит, что он не может подключиться к 127.0.0.1:2375 (но docker-machine ls показывает машину по умолчанию, работающую на 192.168.99.100:2376).

Ответ 13

Я столкнулся с той же ошибкой, когда я запускал изображения докеров после перезагрузки системы. Я использовал докере версию 1.10 на Windows 7 64 бит с virtualbox 5.0.10 и mintty (терминал поставляется с Git для Windows)

Выполнение docker-machine ls показало, что виртуальная машина находится в состоянии Timeout. $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default virtualbox Timeout Поэтому я перезапустил виртуальную машину $ docker-machine restart default Затем перечислите статус, который снова сказал мне, что сертификат связан с неправильным адресом: $ docker-machine ls Unable to query docker version: Get https://192.168.56.101:2376/v1.15/version: x509: certificate is valid for 192.168.99.101, not 192.168.56.101 Затем я регенерирую сертификат $ docker-machine regenerate-certs default и наконец $ eval $(docker-machine env default --shell=bash) Затем докер снова работает!

Ответ 14

Просто заново создайте машину по умолчанию, а затем запустите

docker-machine env default

Это работает для меня.

Ответ 15

если вы используете докер для окон (бета), выполните следующие действия:

  • Отключить сетевой адаптер "DockerNAT"
  • Запустите "Reset to factory по умолчанию" через панель задач/докеры/настройки/Reset до factory по умолчанию "

Ответ 16

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

  • Остановить машину докеров с помощью "остановки докерной машины"
  • Открыть сеть и центр обмена в ОС Windows
  • Нажмите "Изменить настройки адаптера"
  • Отключить сеть VirtualBox-Host Only
  • Запустите Docker machine с помощью запуска docker-machine

Ответ 17

На моей не виртуальной машине я получил ту же ошибку. Ниже шаги работали на меня

Щелкните правой кнопкой мыши docker-> В разделе Settings-> General у вас есть демон Expose на tcp://localhost: 2375 без включенного TLS? Это необходимо, если вы хотите получить доступ к демону, как описано. Но имейте в виду, что этот параметр небезопасен, как описано в предупреждении.

Ответ 18

Моя проблема была "... ошибка при получении IP-адреса". Спасибо всем людям, которые предоставили свои решения, которые я прочитал, и выполнили следующие шаги:

  1. Закрыть Docker

  2. Откройте VirtualBox Manager

  3. Удалить виртуальную машину по умолчанию

  4. Сначала запустите Kitematic (я думаю, что это важно)

  5. Запустить Docker