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.