Docker в Windows 10 "драйвер не зміг програмувати зовнішнє підключення на кінцевій точці"


134

Я намагаюся використовувати $ docker-compose up -dдля проекту, і отримую це повідомлення про помилку:

ПОМИЛКА: для api Неможливо запустити службу api: драйвер не вдалося програмувати зовнішнє підключення на кінцевій точці dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): Помилка запуску userland proxy.0.0kcput_072.0tc error072: mkdir/72 Зустрічалися з помилками під час відображення проекту.

Мені цікаво, чи це може бути порт? Я раніше пробував порт 8080. Спочатку проект був створений на mac, і я клонував сховище з gitHub.


Будь ласка, додайте посилання на квиток на Github, щоб ми всі могли зайти туди і підтвердити його.
PussInBoots

Відповіді:


270

Я отримав те саме повідомлення про помилку в моєму Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0, використовуючи Windows Powershell x86 в режимі адміністратора.

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


Я користувач docker версії 18.03.0-ce-win59 (16762) в Windows 10 Professional. Зображення Докера - це дженкінси / дженкінси: 2.107.2. Після витягання я використовую цю команду для установки docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Після встановлення jenkins я використовую docker stop myJenkinsв іншому вікні команди та вимикаю хост Windows 10. Коли я запускаю Windows 10, який автоматично запускається докер, я використовую команду docker start myJenkinsта отримую знайоме повідомлення. Однак перезапуск докера вирішує проблему :)
Charles Wu

1
Хтось знає, чому це відбувається? Перезапуск докера здається хитким, чи є спосіб вирішити це правильно?
Шторм Мюллер

Те саме виправлення працювало для мене в березні 2019. Використання Docker Desktop Версії 2.0.0.3 (31259) Канал: стабільна збірка: 8858db3 Клієнт: Docker Engine - Версія спільноти: 18.09.2 Версія API: 1.39 Перейти до версії: go1.10.8 Git commit: 6247962 Побудовано: Пн 10 лютого 04:12:31 2019 OS / Arch: windows / amd64 Експериментальний: false win 10 Версія 10.0.18346.1 (швидка версія попереднього випуску)
JohnC

була така ж проблема на Mac, і перезапуск докера виправив це також ... Ісус, я повинен був перевірити вашу відповідь, перш ніж перевстановити все середовище
докера

67

Якщо трапиться один раз, перезапуск Docker виконає роботу. У моєму випадку це відбувалося щоразу, коли я перезавантажував комп’ютер.

У цьому випадку вимкніть Швидкий запуск , інакше ви, мабуть, будете перезавантажувати Docker кожного разу, коли комп'ютер запускається. Цей розчин був отриманий звідси


6
Це слід сприймати як відповідь. Перезапуск працює, але коли це потрібно робити кожного разу, коли це стає дратує
Віталій

Я отримав цю помилку під час перемикання користувачів на Windows 10
Васько

58

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

У моєму випадку я вирішив проблему точними кроками нижче:

1) Закрийте "Докер робочий стіл"

2) Виконайте команди нижче:

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

3) Запустіть "Docker Desktop" ще раз

Сподіваюсь, це допоможе комусь іншому.


3
Це працює для мене після спроби просто перезапустити докер! Також не забудьте запустити цю пару з привілеєм адміністратора
Gad Wissberg

Це спрацювало, але я не маю привілеїв адміністратора весь час :(
Хассан Тарек

3
Для мене працював перезапуск служби докер, зазвичай просто достатньо було перезапустити робочий стіл докера, але не цього разу ... докер на Windows 10 дуже болісний (затримки, помилки, документ, ...)
FAjir

Це спрацювало! Повинна бути реально прийнята відповідь. Спасибі
Домінік К

Працював для мене, Thnx!
Г.Маст

9

Я також отримав цю помилку, якщо ви хочете знати головну причину, через яку виникає помилка, її тому, що докер вже працює аналогічний контейнер, щоб вирішити проблему (уникайте перезавантаження 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, перш ніж це зробити, тому що в моєму випадку у мене виникла щось на зразок помилки із пропозицією відновити до заводських налаштувань.
Теодосій

Ні, @TheodosiosAsvestopoulos, я не отримав цього спливаючого вікна.
jasie

Як не дивно, у мене знову була така ж проблема, перезавантаження докера не допомогло. Я не хотів знову робити скидання до заводських налаштувань, тому що ми витягуємо дійсно великі зображення, тому я просто вийшов з Docker Desktop і знову відкрив його, і це спрацювало (здається, це інша дія, ніж просто його перезапуск).
Теодосій

6

Зазвичай ця помилка трапляється, коли ви намагаєтеся запустити контейнер, але порти, необхідні контейнеру, зайняті, як правило, тим самим Docker, як результат останнього поганого процесу для зупинки.

Для мене рішення таке:

  1. Відкрийте вікно CMD, як адміністратор, введіть, netstat -oanщоб знайти процес (Docker - це той процес), який займає ваш порт:

У моєму випадку мої порти докера - 3306 6001 8000 9001.

  1. Тепер нам потрібні вільні порти, тому ми переходимо вбити цей процес PID (colum PID)

    TASKKILL /PID 9816 /F
    
  2. Перезавантажте докер.

  3. Будь щасливий.

З повагою


2

У моєму випадку проблема полягала в тому, що контейнер docker (Nginx) використовує 80 порт, а IIS використовує той самий. Налаштування іншого порту в IIS вирішує проблему


1

У більшості випадків, ви повинні задуматися про те, чи працює ця стара версія та використовується цей порт. У моєму випадку, оскільки я змінюю ім'я зображення, то при використанні docker-compose для зупинки (потім вгору) він не зупинить старий контейнер (послугу), привести до того, що новий контейнер не можна запускати.


0

Трохи пізня відповідь, але я залишу її тут, це може допомогти комусь іншому на Mac mojave після багатьох перезавантажень як Mac, так і Docker мені довелося sudo apachectl stop.


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

Уявіть, що є контейнер з ідентифікатором контейнера. 8e35276e845eВи можете використовувати команду docker rm 8e35276e845eабо docker rm 8e3закінчити контейнер. Зауважте, що перші 3 рядки - це ідентифікатор конкретного ідентифікатора контейнера докера. Таким чином, згідно з вищезазначеним сценарієм 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-хост також повинен бути змінений,

Наприклад (відповідно до вищезазначеного сценарію):

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

Це допоможе вам вирішити вищевказану проблему.


0

Для багатьох користувачів Windows, які мають ту саму проблему, я б запропонував перезапустити комп'ютер, тому що більшість разів (як мінімум для мене) перезапуск просто Docker не працює. Отже, я б запропонував вам виконати наступні кроки:

  1. Перезавантажте ПК.
  2. Потім запустіть PowerShell як адміністратор і запустіть це:

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

  3. Після цього перезапустіть Docker.

Після виконання цих кроків ви зможете без проблем запуститись. Я сподіваюся, що це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.