我的 docker 容器能够成功构建,但是当我输入命令 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 is already allocation 消息感到困惑
netstat | grep 5432
?
嗨@shin-,
我刚刚在我的机器上进行了硬重置,我得到:
$ docker-compose up
_collections.so could not be extracted!
之后,我遇到了与@patrickconnors发布的相同的问题:
有任何想法吗?
@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 解决方案在本地为我工作(仍然需要在 prod 中尝试)
以下是我的docker-compose
_part_
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
这样的东西。 我通过在 up 命令中使用--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'驱动程序在端点 iky_gateway 上编程外部连接失败(47d83edbbc1568eae6d26f5e75931797b7e23c6528ff7cc8140f50811fb44922):已分配的0000 000 00 个用户绑定端口代理失败。
我试过docker-compose down
,没有解决。
另一个可能对未来读者有所帮助的解决方案是:仔细检查您的 docker-compose.yml 文件并检查以确保您没有 2 个项目试图在端口 8080 上运行。
如果您确实有 2 个项目配置为在端口 8080 上运行,您可能会收到未导致问题的服务/容器的“端口已分配”错误消息 - 当您尝试杀死服务/容器并获取时,这会导致您感到困惑没有解决错误消息。
@Rub21的解决方案对我kill -9 {pid}
不断重启进程。 这是因为我运行了 MySQL 服务器。 在 OSX 上,我必须:
mysql
Stop MySQL Server
按钮我删除了端口绑定,它对我有用,而不是
mysql:端口:- 3306:3306
我不得不改为
mysql:端口:- 3306
一切都很好。
泊坞窗停止 $(泊坞窗 ps -a -q)
docker rm $(docker ps -a -q)
然后删除任何现有数据,例如 docker volume 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 的代理设置有问题。
_难以置信的_。 事实上,我有一个小错误导致了这个问题。 我的配置需要 _two_ 端口,其中一个有错别字,复制另一个。 面掌
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 尝试分配主机端口两次。
docker-compose.yml:
ports:
- 8080:8080
docker-compose.override.yml:
ports:
- 8080:8181
也许这本身就是一个问题,创建覆盖映射会导致重复绑定尝试。 这种情况特别糟糕,因为在您尝试将容器联机之前,没有任何东西在侦听端口。 失败并因此关闭整个组合,导致端口再次未分配。
@lorenzo-pasa 的解决方案对我有用! 我正在使用 docker-compose 和 nginx,运行 ubuntu 操作系统,谢谢老兄。
我很好奇:为什么这个问题关闭了,而许多人(包括我自己)似乎仍然遇到问题? 从不写(例如) 8080:8080
并始终只写8080
是官方修复吗? 只是要清楚这不是抱怨,我真的很好奇。
@Ezwen同意
我尝试了上面发布的所有建议,但仍然出现错误。
我正在运行 PHPstorm 并尝试在 dockerbox 中 Xdebug 我的应用程序。 启动我的 dockerbox 时,我使用 docker-compose up
端口:
- “9001:9001”
它正确地公开了端口。 (vpnkit.exe 是 Docker 的一部分)
我看到 vpnkit.exe 正在侦听端口 9001。所以当我现在尝试在 PHPstorm 中启动我的 Xdebug 时,它出现了错误消息
我不知道为什么我不能告诉 PHPstorm 调试器监听端口 9001,而当我启动我的 docker 容器时它总是被 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 容器仍在来自不同项目的后台运行。
我通过运行修复:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
我有一个与@maritaria提到的相同的问题。
@freesoft最好为此打开一个新问题。
我在这里尝试了一切,但似乎没有任何效果,然后我这样做了:
须藤 lsof -i -P -n | 格雷普 5432
杀死所有进程
须藤杀
然后它对我有用。
有同样的问题
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,它对我有用。
docker network prune
似乎为我解决了这个问题
须藤 lsof -i -P -n | 格雷普 5432
为我工作 ec2 linux 实例
须藤 lsof -i -P -n | 格雷普
对我有用,但我是否必须时不时地杀死进程?
就我而言,我已经在本地运行了一个具有相同端口的 node.js 实例。
当我停止它时, docker-compose up --build
开始工作!
就我而言,我重新启动 SO
@Rub21的
sudo lsof -i -P -n | grep <port number>
骂使用程序为docker-pr
。
相应地更新我的搜索关键字后,我遇到了这个。
这解决了我无法使用假定未分配但无论如何都已分配的端口来部署服务的问题。
谢谢。
顺便提一句:
就我而言,我认为错误的根源是我在执行docker network prune
时进行了硬关机。
我猜 cli 无法完成任务,因此我的 docker/网络路径中有所有那些“不存在的”剩余物。
在我的情况下,这有效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-proxy 进程:
docker run -it -p 50000:50000 你好世界
docker:来自守护进程的错误响应:驱动程序在端点 musing_dijkstra 上编程外部连接失败(2afd0e53bb80223bc07650e59bd16b43c6d971828a589db6f43dfa50a7a1ab42):绑定为 0.00.000:5 端口已分配失败。
docker run -it -p 80:80 你好世界
docker:来自守护进程的错误响应:驱动程序在端点 cocky_goldberg 上编程外部连接失败(8dab653c7575c298efea1b808ef2ff16f19bb6c23f51612787e19a434ceeb2ff):绑定 0.0.0.0:80 端口已经失败。
顶部 | 僵尸
任务:共 319 个,1 个运行,181 个睡眠,0 个停止,2 个僵尸
用户名 -r
4.14.35-1844.4.5.el7uek.x86_64
@lorenzo-pasa 我在领事服务方面遇到了同样的问题,你的伎俩对我有用。 感谢您的解决方案。
泊坞窗停止 $(泊坞窗 ps -a -q)
docker rm $(docker ps -a -q)
然后删除任何现有数据,例如 docker volume rm docker_db_data
码头工人组成
@joseph-luketelo(谢谢!)的这个解决方案适用于 MacOS Mojave。 甚至不需要“删除任何现有数据......”。 只需运行前两个命令即可解决。
/var/lib/docker/network/files/local-kv.db
(关闭和关闭所有内容)不起作用docker-proxy
实例不起作用(netstat 输出中不再显示该端口的任何内容,但仍然显示此错误消息)。docker-compose up
无限期挂起。这种情况几乎每周都会发生在我身上一个月左右,到目前为止,唯一能解决问题的方法就是每次都重新安装 docker。 为什么这是关闭的? 即使进行了上述步骤,这显然是某种错误......
所有提到的解决方案对我都不起作用。
这是有效的:
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 配置后,我遇到了同样的错误。
ハ➜ 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 应用程序并退出我的“Visual Studio Code”IDE,它有一个 docker 扩展......
然后我再次尝试并尝试 netstat 端口..
ハ➜ netstat -n | grep 10002
没有找到该端口的任何内容......之前应该尝试过这个。
ハ➜ docker-compose up
看起来 Visual Studio Code Docker 扩展可能是我的问题。
你能分享你的 docker-compose 文件配置吗
你需要删除端口镜像
为我工作
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 谢谢,这个解决方案对我有用。
只需在 Mac 上重新启动 docker 桌面守护程序就可以解决我的问题(Docker 桌面 2.2.0.4)。
似乎在启动时行为不端。
泊坞窗停止 $(泊坞窗 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
我无法重新启动 docker,因为另一个容器在那里运行
@KorossGame提出的@mogadanez您可以尝试查找哪个进程已经在使用此端口。
祝你有美好的一天,
@pandaatrail
它的泊坞窗,但它没有帮助,我无法重新启动整个泊坞窗。
@mogadanez如果您无法重新启动
sudo lsof -i -P -n | grep 9200
还要检查 docker 容器是否没有使用与以下相同的输入端口:
docker ps
它根本行不通。 lsof
不显示正在使用的任何端口。 删除图像并重新创建整个堆栈不起作用。 重新启动 docker 不起作用。 唯一有效的是重新启动系统。 祝你好运。
你好,
你只需要验证是否有另一个服务使用相同的端口,
docker-compose down
netstat -ano | findstr :port
(例如netstat -ano | findstr :18080
)taskkill /pid the_pid_of_the_port /f
docker-compose up
就是这样😄
@olknownsaoui我尝试了所有这些,但对于 mac。 没有解决方案有效。
@gabrielhpugliese您是否尝试过查看端口是否正在使用中?
@olknownsaoui我尝试了所有这些,但对于 mac。 没有解决方案有效。
我在 Ubuntu 上有类似的撰写行为。 这是副作用,基于错误的 iptables 设置。 应该手动检查和释放端口转换。 不记得 MacOS 的正确语法。 用蔷薇石找到它应该不难。
我不明白为什么我需要所有这些,而问题就消失了。 它
不是我正在构建的新设置,也没有创建新设置
容器/服务。 我刚刚用 up -d 重新创建了我的服务器容器
- 建造。 真的很奇怪。
Vitaly-zverev通知@github.com schrieb am Mi.,2020 年 8 月 19 日,
17:27:
@olknownsaoui https://github.com/olknownsaoui我尝试了所有这些,但是
对于 Mac。 没有解决方案有效。我在 Ubuntu 上有类似的撰写行为。 这是副作用,基于
错误的 iptables 设置。 端口翻译应该检查和发布
手动。 不记得 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. Aug. 2020, 17:27:
…
@olknownsaoui https://github.com/olknownsaoui我尝试了所有这些,但对于 mac。 没有解决方案有效。 我在 Ubuntu 上有类似的撰写行为。 这是副作用,基于错误的 iptables 设置。 应该手动检查和释放端口转换。 不记得 MacOS 的正确语法。 用蔷薇石找到它应该不难。 — 您收到此消息是因为有人提到了您。 直接回复本邮件,在GitHub上查看< #4950(评论) >,或者退订https://github.com/notifications/unsubscribe-auth/AAJR3UTBMGLV2ECW5GCNQDTSBPVNXANCNFSM4DQLFGPQ 。
嗯,好吧,据我所知,应该在 docker 与网络翻译集成的地方分析它们的根本原因。 它依赖于操作系统并且有很多含义,
就像任何集成错误一样。
得到了很多好的答案。 我发现问题是我在 Catalina 上安装的另一个应用程序(Sky Go),即使它已关闭,它也会以某种方式导致端口冲突。
值得检查此类应用程序(包括 Skype)不会导致问题。
我也面临同样的问题。 我正在使用端口 8080,每次尝试运行 docker 时,它都显示端口 8080 已在使用中。 然后我检查是否有任何其他应用程序阻止了该端口但没有找到任何东西。
然后按照以下步骤操作。
如果您使用的是 WSL2,请检查是否启用了 Hyper-V。 如果不是,只需启用它,就可以了。
操作系统重启帮助了我
最有用的评论
这👇对我有用!!