Ответ 1
Я получил то же сообщение об ошибке на моем Windows 10 Pro/Docker v17.06.1-ce-win24/Docker-Compose v1.14.0, используя Windows Powershell x86 в режиме администратора.
Решением было просто перезапустить Docker.
Я пытаюсь использовать $ docker-compose up -d
для проекта и получаю следующее сообщение об ошибке:
ОШИБКА: для API Не удается запустить службу Api: драйвер не смог запрограммировать внешнее подключение на конечной точке Обнаружены ошибки при запуске проекта.
Мне интересно, если это может быть порт? Я пробовал порт 8080 ранее. Первоначально проект был создан на Mac, и я клонировал репозиторий из gitHub.
Я получил то же сообщение об ошибке на моем Windows 10 Pro/Docker v17.06.1-ce-win24/Docker-Compose v1.14.0, используя Windows Powershell x86 в режиме администратора.
Решением было просто перезапустить Docker.
Если это произойдет один раз, перезапуск Docker сделает всю работу. В моем случае это происходило каждый раз, когда я перезагружал свой компьютер.
В этом случае отключите быстрый запуск, иначе вы, вероятно, перезапустите Docker при каждом запуске компьютера. Это решение было получено здесь
Простое перезапуск Docker не решило проблему для меня в Windows 10.
В моем случае я решил проблему, выполнив следующие шаги:
1) Закройте "Docker Desktop"
2) Запустите команды ниже:
net stop com.docker.service
net start com.docker.service
3) Запустите "Docker Desktop" снова
Надеюсь, это поможет кому-то еще.
Я также получил эту ошибку, если вы хотите знать основную причину возникновения ошибки, потому что docker уже запускает подобный контейнер, чтобы решить проблему (избегайте перезапуска Docker), вы должны:
docker container ls
У вас есть что-то похожее на:
CONTAINER ID IMAGE COMMAND CREATED
1fa4ab2cf395 friendlyhello "python app.py" 28 seconds ago
Это список запущенных контейнеров, возьмите идентификатор КОНТЕЙНЕРА (копия Ctrl + C)
Теперь вам нужно завершить процесс (и позволить запустить другой образ), чтобы запустить эту команду.
docker container stop <CONTAINER_ID>
И это все! Теперь вы можете создать контейнер.
Для получения дополнительной информации посетите https://docs.docker.com/get-started/part2/
В моем случае проблема заключалась в том, что док-контейнер (Nginx) использует порт 80, а IIS - тот же. Настройка другого порта в IIS решает проблему
Немного поздний ответ, но я оставлю его здесь, это может помочь кому-то еще. На мохаве Mac после многих перезапусков как mac, так и докера мне пришлось сделать sudo apachectl stop
.
Самый простой способ решить эту проблему - перезапустить докер. Но в некоторых случаях это может не сработать, даже если у вас нет контейнеров, работающих в порту. Вы можете проверить работающие контейнеры с помощью команды 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>
Это поможет вам решить вышеуказанную проблему.
Для многих пользователей Windows, имеющих такую же проблему, я бы предложил перезагрузить компьютер, потому что в большинстве случаев (по крайней мере для меня) перезапуск только Docker не работает. Поэтому я бы посоветовал вам выполнить следующие шаги:
Затем запустите PowerShell от имени администратора и выполните следующее:
Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Закрытый
После этого перезапустите Docker.
После выполнения этих шагов вы сможете работать без проблем. Надеюсь, это поможет.
Я знаю, что ответов уже много, но ни один из них не решил для меня проблему.
Вместо этого я избавился от этого сообщения об ошибке, вернув докер к заводским настройкам по умолчанию: