Docker в Windows 10 «драйвер не смог запрограммировать внешнее соединение на конечной точке»

134

Я пытаюсь использовать $ docker-compose up -dдля проекта и получаю это сообщение об ошибке:

ОШИБКА: для API. Невозможно запустить службу. API: драйвер не смог запрограммировать внешнее подключение к конечной точке Обнаружены ошибки при запуске проекта.

Мне интересно, если это может быть порт? Я пробовал порт 8080 ранее. Первоначально проект был создан на Mac, и я клонировал репозиторий из gitHub.

Sockness_Rogers
источник
Пожалуйста, добавьте ссылку на билет GitHub, чтобы мы все могли пойти туда и проголосовать.
PussInBoots

Ответы:

270

Я получил такое же сообщение об ошибке на моем Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 с использованием Windows Powershell x86 в режиме администратора.

Решением было просто перезапустить Docker.

Йенс Кристиан Элдой
источник
Я пользуюсь докером версии 18.03.0-ce-win59 (16762) в Windows 10 Professional. Docker Image - это Дженкинс / Дженкинс: 2.107.2. После pull я использую эту команду для установки docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Закончив настройку jenkins, я использую docker stop myJenkinsв другом окне команд и выключаю хост Windows 10. Когда я запускаю windows 10, которая автоматически запускает docker, я использую команду docker start myJenkinsи получаю знакомое сообщение. Тем не менее, перезапуск докера решает проблему :)
Чарльз Ву
1
кто-нибудь знает, почему это произошло? Перезапуск докера кажется хакерским, есть ли способ решить это правильно?
Буря Мюллер
То же исправление сработало для меня в марте 2019 года. Использование Docker Desktop версии 2.0.0.3 (31259) Канал: стабильный Сборка: 8858db3 Клиент: Docker Engine - Версия сообщества: 18.09.2 Версия API: 1.39 Версия Go: go1.10.8 Git commit: 6247962 Построен: вс 10 февраля 04:12:31 2019 OS / Arch: windows / amd64 Экспериментальный: ложный Win 10 Версия 10.0.18346.1 (быстрая версия перед выпуском)
JohnC
У меня была такая же проблема на Mac, и перезапуск докера также исправил ее ... Иисус, я должен был проверить ваш ответ перед локальной установкой всей среды докера ....: D
cheers
67

Если это произойдет один раз, перезапуск Docker сделает всю работу. В моем случае это происходило каждый раз, когда я перезагружал свой компьютер.

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

чавкать
источник
6
Это должно быть принято в качестве ответа. Перезагрузка работает, но когда вам нужно делать это каждый раз, когда это становится раздражающим
Виталий
Я получил эту ошибку при переключении пользователей на Windows 10
Васко
58

Простое перезапуск Docker не решило проблему для меня в Windows 10.

В моем случае я решил проблему с точными шагами ниже:

1) Закрыть «Docker Desktop»

2) Запустите команды ниже:

net stop com.docker.service
net start com.docker.service

3) Запустите "Docker Desktop" снова

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

Мохаммед Реда УАССИНИ
источник
3
Это работает для меня после попытки перезагрузить докер! Кроме того, не забудьте запустить эту пару с правами администратора
Гад Виссберг
Это сработало, но у меня нет привилегий администратора все время :(
Хасан Тарек
3
У меня работал перезапуск службы докера, обычно достаточно было перезагрузки рабочего стола докера, но не в этот раз ... Докер в Windows 10 действительно болезненный (задержки, ошибки, документация, ...)
a11r
Это сработало! Должен быть реальный принятый ответ. Спасибо
Доминик К
Работал на меня, спасибо!
G.Mast
9

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

docker container ls

Вы получили что-то похожее на:

CONTAINER ID        IMAGE               COMMAND             CREATED
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

Это список запущенных контейнеров, взять идентификатор CONTAINER (копировать Ctrl+ C)

Теперь вы должны завершить процесс (и позволить запустить другой образ) запустить эту команду.

docker container stop <CONTAINER_ID>

И это все! Теперь вы можете создать контейнер.

Для получения дополнительной информации посетите https://docs.docker.com/get-started/part2/

Андрес Родригес
источник
7

Я знаю, что ответов уже много, но ни один из них не решил для меня проблему.
Вместо этого я избавился от этого сообщения об ошибке, восстановив заводские настройки docker :

введите описание изображения здесь

jasie
источник
Был ли у вас какой-либо отчет об ошибках от Docker до того, как я это сделал, потому что в моем случае у меня появилось что-то вроде сообщения об ошибке с предложением восстановить заводские настройки по умолчанию.
Феодосия Авестопулоса
Нет, @TheodosiosAsvestopoulos, я не получил это всплывающее окно.
Джейси
Странно у меня сегодня снова была такая же проблема, перезапуск докера не помог. Я не хотел делать сброс к заводским настройкам по умолчанию, потому что мы извлекаем очень большие изображения, поэтому я просто вышел из Docker Desktop и снова открыл его, и он заработал (похоже, это другое действие, чем просто перезапустить его).
Феодосий Авестопулос
6

Обычно эта ошибка возникает, когда вы пытаетесь запустить контейнер, но порты, в которых он нуждается, заняты, как правило, тем же Docker, как в результате последней неудачной остановки процесса.

Для меня решение:

  1. Откройте Windows CMD как администратор, введите, netstat -oanчтобы найти процесс (Docker - это тот процесс), который занимает ваш порт:

В моем случае мои док-порты 3306 6001 8000 9001.

  1. Теперь нам нужно освободить эти порты, поэтому мы собираемся убить этот процесс с помощью PID (colum PID), типа

    TASKKILL /PID 9816 /F
    
  2. Перезапустите докер.

  3. Будь счастлив.

С уважением.

Джон Дидье Сотто
источник
2

В моем случае проблема заключалась в том, что док-контейнер (Nginx) использует порт 80, а IIS - тот же. Настройка другого порта в IIS решает проблему

Артур Камильянов
источник
1

В большинстве случаев, первый случай, о котором вы должны подумать - это старая служба, работающая и использующая этот порт. В моем случае, так как я меняю имя изображения, то при использовании docker-compose для остановки (затем вверх) он не остановит старый контейнер (службу), приводить к тому, что новый контейнер не может быть запущен.

Phuoc Quach ngoc
источник
0

Немного поздний ответ, но я оставлю его здесь, он может помочь кому-то еще. На мохаве Mac после многих перезапусков Mac и Docker, которые мне пришлось сделать sudo apachectl stop.

Тарек
источник
0
  • Самый простой способ решить эту проблему - перезапустить докер. Но в некоторых случаях это может не сработать, даже если у вас нет контейнеров, работающих в порту. Вы можете проверить работающие контейнеры с помощью docker psкоманды и увидеть все контейнеры, которые не были очищены, но закрыты до использования docker ps -aкоманды.

Представьте, что есть контейнер с идентификатором контейнера. 8e35276e845eВы можете использовать команду docker rm 8e35276e845eили, docker rm 8e3чтобы завершить контейнер. Обратите внимание, что первые 3 строки являются идентификатором этого конкретного идентификатора контейнера Docker. Таким образом, согласно вышеописанному сценарию 8e3 является идентификатором 8e35276e845e .

  • Если перезапуск не работает, вы можете попробовать изменить порты служб в файле docker-compose.yml, и в соответствии с портом apache вы должны изменить порт v-хоста (если есть). Это решит вашу проблему. проблема.

Пример:

    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8082:80
    depends_on:
      - mysql_db

должен быть изменен на

apache_server:
    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8083:80
    depends_on:
      - mysql_db

и конкретный v-хост также должен быть изменен,

Ex (согласно вышеописанному сценарию):

<VirtualHost *:80> 
    ProxyPreserveHost On
    ServerAlias phpadocker.lk
    ProxyPass / http://localhost:8083/
    ProxyPassReverse / http://localhost:8083/
</VirtualHost>

Это поможет вам решить вышеуказанную проблему.

Hirumina
источник
0

Для многих пользователей Windows, имеющих такую ​​же проблему, я бы предложил перезагрузить компьютер, потому что в большинстве случаев (по крайней мере для меня) перезапуск только Docker не работает. Итак, я бы посоветовал вам выполнить следующие шаги:

  1. Перезагрузите компьютер.
  2. Затем запустите PowerShell от имени администратора и выполните следующее:

    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

  3. После этого перезапустите Docker.

После выполнения этих шагов вы сможете запустить без проблем. Надеюсь, это поможет.

Дональд Шахини
источник