Мой контейнер докеров может быть успешно собран, но когда я ввожу команду docker-compose build, возвращается следующая ошибка:
Starting docker_etl_1 ...
Starting 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1 ...
Starting 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1
Starting 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1 ... error
ERROR: for 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1 Cannot start service
postgis: driver failed programming external connectivity on endpoint
1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1
(91464afbee8bf7212061797ec0f4c017a56cc3c30c9bdaf513127a6e6a4a5a52): Error starting
userland prStarting docker_etl_1 ... done
ERROR: for postgis Cannot start service postgis: driver failed programming external connectivity
on endpoint 1e5f56853e10_1e5f56853e10_1e5f56853e10_docker_postgis_1
(91464afbee8bf7212061797ec0f4c017a56cc3c30c9bdaf513127a6e6a4a5a52): Error starting
userland proxy: Bind for 0.0.0.0:5432 failed: port is already allocated
Вот мой docker-compose.yaml
version: '2'
services:
postgis:
build: ./postgis
volumes:
- ../src/main/sql:/sql
ports:
- "5432:5432"
etl:
build: ./etl
volumes:
- ..:/national-voter-file
entrypoint:
- python3
- /national-voter-file/load/loader.py
и вот Dockerfile:
FROM mdillon/postgis:9.5
ENV POSTGRES_DB VOTER
RUN mkdir /sql
COPY ./dockerResources/z-init-db.sh /docker-entrypoint-initdb.d/
EXPOSE 5432
Я не верю, что у меня запущен другой контейнер, поэтому меня смущает сообщение Bind for 0.0.0.0:5432 failed: port уже выделен
netstat | grep 5432
?
Привет @ shin-,
Я только что сделал полный сброс на своей машине и получаю:
$ docker-compose up
_collections.so could not be extracted!
После этого у меня возникла та же проблема, что
Любые идеи?
@budnik Попробуйте запустить docker-compose down
для очистки контейнеров и сетей, затем снова up
и посмотрите, исправит ли это ситуацию.
Сегодня я столкнулся с той же проблемой (с контейнером postgres
), и, несмотря на повторную попытку docker-compose down
а затем up
, проблема все еще сохраняется.
И docker-compose ps
и docker ps
показывают пустой вывод.
Хотя, возможно, я нашел решение:
так определяется мой сервис postgres
version: '2.1'
services:
postgres:
image: postgres:9.5.4
env_file:
- docker-compose.env
ports:
- 5432:5432
и в моем случае исправление заключалось в том, чтобы просто отключить привязку порта, которая меняет последнюю часть как:
ports:
- 5432
Не уверен, что это правильное решение и может ли оно применяться ко всем вариантам использования.
Может быть, проблема в самом docker-compose
?
Для справки:
$ docker-compose --version
docker-compose version 1.12.0, build b31ff33
Приведенное выше решение было тем, что мне было нужно, большое спасибо @ lorenzo-pasa!
У меня была такая же проблема после обновления моей docker-compose до версии 3.3.
Решение @ lorenzo-pasa работает для меня локально (все еще нужно попробовать в продукте)
Ниже для справки приведена _часть_ моего docker-compose
:
nginx:
image: nginx:1.12.2-alpine
volumes:
- .:/usr/share/nginx/app
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
ports:
- "80"
depends_on:
- web
У меня было это, а также такие вещи, как Cannot start service mysql: network 4b8e7a23e3724fd351e428be30cdf7a9294d142ac23959ca9092278fc81e96c1 not found
. Я решил их, используя флаги --build --force-recreate
для команды вверх.
Это 👇 работает для меня !!
docker-compose down
docker rm -fv $(docker ps -aq)
sudo lsof -i -P -n | grep 5432
kill -9 <process id>
sudo kill <process id>
ОШИБКА: для iky_gateway не удается запустить службу iky_gateway: b'driver не удалось запрограммировать внешнее подключение на конечной точке iky_gateway (47d83edbbc1568eae6d26f5e75931797b7e23c6528ff7cc8140f50811fb44922): ошибка при запуске прокси-сервера пользовательской области: сбой при запуске прокси-сервера: порт Bind уже выделен для 0.0.0.
Пробовал docker-compose down
, не исправил.
Другое решение, которое может быть полезно для будущих читателей: дважды проверьте файл docker-compose.yml и убедитесь, что у вас нет двух элементов, пытающихся запустить через порт 8080.
Если у вас есть 2 элемента, настроенных для работы на порту 8080, вы можете получить сообщение об ошибке «порт уже выделен» для службы / контейнера, который не вызывает проблемы, что вызовет у вас путаницу, когда вы попытаетесь убить службу / контейнер и получите нет разрешения к сообщению об ошибке.
Решение @ Rub21 сработало для меня, за исключением того, что kill -9 {pid}
продолжал перезапускать процесс. Это произошло потому, что у меня был запущен сервер MySQL. В OSX мне пришлось:
mysql
Stop MySQL Server
Я удалил привязку порта, и это сработало для меня, вместо того, чтобы делать
mysql:порты:- 3306: 3306
мне пришлось сменить на
mysql:порты:- 3306
и все было хорошо.
docker stop $ (докер ps -a -q)
docker rm $ (докер ps -a -q)
Затем удалите все существующие данные, например, том docker rm docker_db_data
докер-сочинять
Здесь та же проблема. Я использую версию docker 17.05.0-ce, сборку 8965be, с docker-compose 1.13.0 и 1.22.0. Файл compose-yml - 3.2.
Приносим свои извинения @KazibweStephen , это бесполезное решение. Вы говорите docker-compose выбрать _abritrary_ порт для клиентов, чтобы подключиться к службе mysql контейнера. С таким же успехом вы можете сказать mysql, чтобы он не слушал какой-либо порт или просто полностью удалил конфигурацию порта.
Я пробовал различные решения, указанные выше, включая _перезагрузку сервера_. Никакие другие контейнеры не работают, и в файле yml нет конфликтов. Напомню, что это работало в гораздо более старой версии docker / compose. netstat -anp
на хосте ничего не показывает, прослушивая порты.
Если я полностью открою разделы ports
, процессы запустятся нормально. Затем я использую nsenter ... netstat
чтобы убедиться, что контейнер прослушивает правильный порт (в своем пространстве имен). Затем я проверяю с помощью netstat
чтобы убедиться, что в пространстве имен по умолчанию нет конфликта. Затем я могу использовать такую утилиту, как nc
чтобы прослушивать тот же порт.
По сравнению с документацией я не вижу причин, по которым конфигурация не работает. Вывод: что-то не так с настройкой прокси-сервера docker-compose.
_Невероятный_. На самом деле у меня была крошечная ошибка, которая вызвала проблему. Моя конфигурация требовала _два_ порта, и в одном из них была опечатка, дублирующая другой. фейспалм
netstat | grep 5432
?
Привет, когда я запустил это, я получил это сообщение ..
98808d86b49cff5d поток 0 0 98808d86b6dd9be5 0 0 0 /tmp/.s.PGSQL.5432. Не могли бы вы помочь мне, что делать? Спасибо
и в моем случае исправление заключалось в том, чтобы просто отключить привязку порта, которая меняет последнюю часть как:
ports: - 5432
Не уверен, что это правильное решение и может ли оно применяться ко всем вариантам использования.
Может быть, проблема в самом
docker-compose
?
Для справки:$ docker-compose --version docker-compose version 1.12.0, build b31ff33
Это исправление сработало для меня.
docker-compose -version
docker-compose version 1.23.1, build b02f1306
У меня была немного другая ситуация, я разместил здесь запись, чтобы записать еще один случай этого.
При использовании файлов docker-compose.yml
и docker-compose.override.yml
, которые оба содержат сопоставление портов, где порт хоста одинаков для обоих сопоставлений, но порт контейнера отличается, тогда докер пытается выделить порт хоста дважды.
docker-compose.yml:
ports:
- 8080:8080
docker-compose.override.yml:
ports:
- 8080:8181
Возможно, это проблема сама по себе, создание переопределяющих сопоставлений приводит к дублированию попыток привязки. Эта ситуация специфична, потому что порт не прослушивается, пока вы не попытаетесь перевести контейнеры в оперативный режим. Что дает сбой и, следовательно, отключает всю композицию, что приводит к тому, что порт снова становится нераспределенным.
Решение @ lorenzo-pasa сработало для меня! Я использую docker-compose и nginx под управлением ОС Ubuntu, спасибо, чувак.
Мне любопытно: почему этот вопрос закрыт, в то время как многие люди, кажется, все еще сталкиваются с проблемой (включая меня)? Официальное исправление - никогда не писать (например) 8080:8080
и всегда писать вместо этого просто 8080
? Чтобы было ясно, это не жалоба, мне искренне любопытно.
@Ezwen согласен
Я испробовал все предложения, опубликованные выше, но все еще работает с ошибками.
Я запускаю PHPstorm и пытаюсь выполнить Xdebug своего приложения в докербоксе. При запуске моего dockerbox я использую docker-compose up с
порты:
- «9001: 9001»
который правильно выставляет порт. (vpnkit.exe является частью Docker)
Я вижу, что vpnkit.exe прослушивает порт 9001. Поэтому, когда я пытаюсь запустить Xdebug в PHPstorm, появляется сообщение об ошибке.
Я не знаю, почему я не могу указать отладчику PHPstorm прослушивать порт 9001, когда он всегда используется vpnkit.exe, когда я запускаю свой контейнер докеров?
Спасибо, @ lorenzo-pasa! Это была именно моя проблема, и ваши решения сработали. Я много чего пробовал, чтобы решить эту проблему, но безрезультатно. Еще раз спасибо!
Сегодня я столкнулся с той же проблемой (с контейнером
postgres
), и, несмотря на повторную попыткуdocker-compose down
а затемup
, проблема все еще сохраняется.И
docker-compose ps
иdocker ps
показывают пустой вывод.Хотя, возможно, я нашел решение:
так определяется мой сервис
postgres
version: '2.1' services: postgres: image: postgres:9.5.4 env_file: - docker-compose.env ports: - 5432:5432
и в моем случае исправление заключалось в том, чтобы просто отключить привязку порта, которая меняет последнюю часть как:
ports: - 5432
Не уверен, что это правильное решение и может ли оно применяться ко всем вариантам использования.
Может быть, проблема в самом
docker-compose
?
Для справки:$ docker-compose --version docker-compose version 1.12.0, build b31ff33
Для меня проблема заключалась в том, что другой контейнер докеров все еще работал в фоновом режиме из другого проекта.
Я исправил, запустив:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
У меня такая же проблема, о которой упоминала
@freesoft Наверное, лучше открыть для этого новый выпуск.
Я пробовал все здесь, но, похоже, ничего не работает, тогда я сделал следующее:
sudo lsof -i -P -n | grep 5432
убить все процессы
sudo kill
тогда это сработало для меня.
Была такая же проблема с
Version: 18.09.3
API version: 1.39
Go version: go1.10.8
Git commit: 774a1f4
Built: Thu Feb 28 06:53:11 2019
OS/Arch: linux/amd64
Experimental: false
Один из процессов docker-proxy
зависал, поэтому его закрытие и systemctl restart docker
решили проблему.
Я запустил docker system prune (будьте осторожны с этой командой), а затем перезапустил докер, у меня это сработало.
docker network prune
похоже, решает проблему для меня
sudo lsof -i -P -n | grep 5432
работал у меня экземпляр ec2 linux
sudo lsof -i -P -n | grep
работает для меня, но нужно ли мне время от времени убивать процессы?
В моем случае у меня уже был запущенный экземпляр node.js на локальном компьютере с тем же портом.
Когда я его перестал, docker-compose up --build
заработало!
в моем случае я перезапускаю SO
@ Rub21 's
sudo lsof -i -P -n | grep <port number>
Оскорбил программу использования как docker-pr
.
После соответствующего обновления ключевых слов для поиска я столкнулся с этим .
Это решило мою проблему, заключающуюся в том, что я не могу развертывать службы с использованием портов, которые не должны быть выделены, но в любом случае есть.
Спасибо.
КСТАТИ:
В моем случае я бы поверил, что причиной моей ошибки было то, что я выполнял принудительное завершение работы при выполнении docker network prune
.
Я предполагаю, что cli не смог завершить задачу, поэтому у меня были все эти «несуществующие» остатки на моем пути к докеру / сети.
В моем случае это сработало https://github.com/docker/for-mac/issues/205#issuecomment -250856158
On linux users have reported that after remove local-kv.db with all containers stoped the problem gets solved.
Файл находится в /var/lib/docker/network/files/local-kv.db
kill -9 $(sudo lsof -i -P -n | grep 8888 | awk '{print $2}')
помогли мне
к сожалению, трюк с "kill -9 .." не работает.
получили зомби вместо процесса докер-прокси:
docker run -it -p 50000: 50000 привет-мир
docker: ответ об ошибке от демона: сбой драйвера при программировании внешнего подключения на конечной точке musing_dijkstra (2afd0e53bb80223bc07650e59bd16b43c6d971828a589db6f43dfa50a7a1ab42): сбой привязки для 0.0.0.0:50000: порт уже выделен.
docker run -it -p 80:80 привет-мир
docker: ответ об ошибке от демона: драйвер не удалось программировать внешнее подключение на конечной точке cocky_goldberg (8dab653c7575c298efea1b808ef2ff16f19bb6c23f51612787e19a434ceeb2ff): сбой привязки для 0.0.0.0:80: порт уже выделен.
наверх | grep зомби
Заданий: всего 319, 1 запущен, 181 спит, 0 остановлен, 2 зомби
uname -r
4.14.35-1844.4.5.el7uek.x86_64
@ lorenzo-pasa Я столкнулся с той же проблемой для службы консула, и ваш трюк у меня сработал. Спасибо за решение.
docker stop $ (докер ps -a -q)
docker rm $ (докер ps -a -q)
Затем удалите все существующие данные, например, том docker rm docker_db_data
докер-сочинять
Это решение от @ joseph-luketelo (спасибо!) Работало на MacOS Mojave. Даже не нужно было «удалять существующие данные ...». Это решило простое выполнение первых двух команд.
/var/lib/docker/network/files/local-kv.db
(со всем выключенным и выключенным) не сработалоdocker-proxy
занимающих порты, не сработало (в выводе netstat для этого порта больше ничего не отображается, но все же это сообщение об ошибке).docker-compose up
просто зависнет на неопределенный срок.Это происходило со мной почти еженедельно в течение месяца или около того, и пока единственное, что помогает, - это переустановка докера каждый раз. Почему это закрыто? Даже если вышеперечисленные шаги были выполнены, это явно ошибка некоторого разнообразия ...
все упомянутые решения у меня не работали.
Это сработало:
sudo rm -rf /var/lib/docker
sudo service docker restart # to re-create the db again
Я также пытался переустановить docker и docker-compose, но понятия не имею, поможет ли этот шаг. Это не сработало, пока я не выполнил упомянутые выше шаги.
Сегодня я столкнулся с той же проблемой (с контейнером
postgres
), и, несмотря на повторную попыткуdocker-compose down
а затемup
, проблема все еще сохраняется.И
docker-compose ps
иdocker ps
показывают пустой вывод.Хотя, возможно, я нашел решение:
так определяется мой сервис
postgres
version: '2.1' services: postgres: image: postgres:9.5.4 env_file: - docker-compose.env ports: - 5432:5432
и в моем случае исправление заключалось в том, чтобы просто отключить привязку порта, которая меняет последнюю часть как:
ports: - 5432 (this also solve my problem)
Не уверен, что это правильное решение и может ли оно применяться ко всем вариантам использования.
Может быть, проблема в самом
docker-compose
?
Для справки:$ docker-compose --version docker-compose version 1.12.0, build b31ff33
отключение привязки порта также решило мою проблему
Я получал ту же ошибку после перестройки конфигурации докера.
ハ➜ docker-compose up
Я пытался:
ハ➜ docker-compose down
но все еще столкнулся с той же проблемой ....
ef18b3f0f2864b22e102): Bind for 0.0.0.0:10002 failed: port is already allocated
ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint eeschenck_db_1 (a7caadb27e327b901df83bb42fd19bd704224aa03a75ef18b3f0f2864b22e102): Bind for 0.0.0.0:10002 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
Затем я попытался перезапустить приложение Docker и вышел из своей среды IDE Visual Studio Code, которая имеет расширение докера ...
Затем я попробовал еще раз и попытался netstat порта ..
ハ➜ netstat -n | grep 10002
Ничего не найдено для этого порта ... Надо было пробовать это раньше.
ハ➜ docker-compose up
Похоже, для меня проблема с расширением Visual Studio Code Docker.
Можете ли вы поделиться своей конфигурацией файла для создания докеров?
вам нужно удалить зеркалирование портов
Работал на меня
docker-compose down
docker network prune
sudo service docker restart
docker-compose up
Сегодня я столкнулся с той же проблемой (с контейнером
postgres
), и, несмотря на повторную попыткуdocker-compose down
а затемup
, проблема все еще сохраняется.И
docker-compose ps
иdocker ps
показывают пустой вывод.Хотя, возможно, я нашел решение:
так определяется мой сервис
postgres
version: '2.1' services: postgres: image: postgres:9.5.4 env_file: - docker-compose.env ports: - 5432:5432
и в моем случае исправление заключалось в том, чтобы просто отключить привязку порта, которая меняет последнюю часть как:
ports: - 5432
Не уверен, что это правильное решение и может ли оно применяться ко всем вариантам использования.
Может быть, проблема в самом
docker-compose
?
Для справки:$ docker-compose --version docker-compose version 1.12.0, build b31ff33
@ lorenzo-pasa Спасибо, это решение сработало для меня.
Простой перезапуск демона рабочего стола Docker на Mac помог мне (Docker Desktop 2.2.0.4).
Похоже, что-то пошло не так при запуске.
docker stop $ (докер ps -a -q)
Запустите эту команду, прежде чем пытаться использовать другие фиксированные значения, например от -8080: 8080 до -8080 или даже docker rm $ (...)
Я перезагрузил свою машину, и она снова начала работать. Возможно не точное решение, но сработало
Если docker ps ничего не выводит и docker-compose down / up не помог, проверьте, используется ли порт, с помощью этой команды:
sudo lsof -i -P -n | grep 9200
Если это так, просто запустите:
sudo service docker restart
есть такая же проблема. Я делаю :
docker-compose down
docker-compose build
docker-compose up -d
но иногда случается ошибка
ERROR: for xxxxxx Cannot start service web: driver failed programming external connectivity on endpoint xxxxx (xxxx): Bind for 0.0.0.0:22000 failed: port is already allocated
Я не могу перезапустить докер, потому что там работают другие контейнеры
@mogadanez, предложенный @KorossGame, вы можете попытаться найти, какой процесс уже использует этот порт.
Хорошего дня,
@pandaatrail
его докер, но это не помогает, я не могу перезапустить весь докер.
@mogadanez Если не
sudo lsof -i -P -n | grep 9200
Также проверьте, не используются ли контейнеры докеров одни и те же порты ввода с:
docker ps
Это просто не работает. lsof
не показывает какие-либо используемые порты. Удаление изображений и воссоздание всего стека не работает. Перезапуск докера не работает. Единственное, что сработало, - это перезагрузка системы. Удачи.
Привет,
вам просто нужно проверить, есть ли другая служба, использующая тот же порт,
docker-compose down
netstat -ano | findstr :port
(например, netstat -ano | findstr :18080
)taskkill /pid the_pid_of_the_port /f
docker-compose up
Вот и все 😄
@olfamoussaoui Я пробовал все это, кроме Mac. Никакое решение не работает.
@gabrielhpugliese вы пытались узнать, используется ли порт?
@olfamoussaoui Я пробовал все это, кроме Mac. Никакое решение не работает.
У меня было подобное поведение при компоновке в Ubuntu. Это был побочный эффект, основанный на неправильных настройках iptables. Трансляцию порта следует проверять и разблокировать вручную. Не помню синтаксис corect для MacOS. Найти его по розеточному камню не должно быть так сложно.
Я не понимаю, зачем мне все это, но проблема уже далеко. Это
это не новая установка, которую я создаю, и я не создавал новую
контейнеры / услуги. Я только что воссоздал свой серверный контейнер с помощью up -d
--строить. Очень странно.
vitaly-zverev [email protected] schrieb am Mi., 19 августа 2020 г.,
17:27:
@olfamoussaoui https://github.com/olfamoussaoui Я пробовал все это, но
для Mac. Никакое решение не работает.У меня было подобное поведение при компоновке в Ubuntu. Это был побочный эффект, основанный на
неправильные настройки iptables. Перевод порта должен быть проверен и выпущен
вручную. Не помню синтаксис corect для MacOS. Это не должно быть так сложно
найти его по розетке.-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/docker/compose/issues/4950#issuecomment-676495723 ,
или отказаться от подписки
https://github.com/notifications/unsubscribe-auth/AAJR3UTBMGLV2ECW5GCNQDTSBPVNXANCNFSM4DQLFGPQ
.
Я не понимаю, зачем мне все это, но проблема уже далеко. Я создаю не новую установку, и я не создавал новые контейнеры / службы. Я только что воссоздал свой серверный контейнер с помощью up -d --build. Очень странно. vitaly-zverev [email protected] schrieb am Mi., 19. авг.2020, 17:27:
…
@olfamoussaoui https://github.com/olfamoussaoui Я пробовал все это, но для Mac. Никакое решение не работает. У меня было подобное поведение при компоновке в Ubuntu. Это был побочный эффект, основанный на неправильных настройках iptables. Трансляцию порта следует проверять и разблокировать вручную. Не помню синтаксис corect для MacOS. Найти его по розеточному камню не должно быть так сложно. - Вы получили это, потому что вас упомянули. Ответьте на это письмо напрямую, просмотрите его на GitHub < # 4950 (comment) > или откажитесь от подписки https://github.com/notifications/unsubscribe-auth/AAJR3UTBMGLV2ECW5GCNQDTSBPVNXANCNFSM4DQLFGPQ .
Уммм, хорошо, насколько я понимаю, их первопричину следует проанализировать в том месте, где докер интегрирован с сетевым переводом. Это зависит от ОС и имеет множество последствий,
точно так же, как любая ошибка интеграции.
Было много хороших ответов. Я обнаружил, что проблема заключалась в другом приложении, которое я установил (Sky Go) на Catalina, которое каким-то образом вызывало конфликт портов, даже если оно было закрыто.
Стоит проверить, не вызывают ли проблемы такие приложения (в том числе Skype).
Я тоже столкнулся с той же проблемой. Я использую порт 8080, и каждый раз, когда я пытался запустить докер, он показывал, что порт 8080 уже используется. Затем я проверил, не блокирует ли порт какое-либо другое приложение, но ничего не нашел.
Затем последовали следующие шаги.
Если вы используете WSL2, проверьте, включен ли Hyper-V или нет. Если это не так, просто включите его, и этого достаточно.
Мне помогла перезагрузка ОС
Самый полезный комментарий
Это 👇 работает для меня !!