Ubuntu Docker错误绑定:地址已在使用中
当我在docker项目中运行Ubuntu Docker错误绑定:地址已在使用中,ubuntu,docker,ubuntu-14.04,bind,docker-compose,systemd,Ubuntu,Docker,Ubuntu 14.04,Bind,Docker Compose,Systemd,当我在docker项目中运行docker compose up时,它会失败,并显示以下消息: Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use netstat-pna | grep3000 这表明: tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN - 我已经尝
docker compose up
时,它会失败,并显示以下消息:
Error starting userland proxy: listen tcp 0.0.0.0:3000: bind: address already in use
netstat-pna | grep3000
这表明:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
我已经尝试了docker compose down,但没有任何帮助。在您的案例中,是其他进程在使用该端口,如注释所示,
sudo netstat-pna | grep 3000
帮助您解决了问题
而在其他情况下(我自己也遇到过很多次),它主要是在其他实例中运行的同一个容器。在这种情况下,docker ps
非常有用,因为我经常让相同的容器在其他目录中运行,然后尝试在使用相同容器名称的其他地方再次运行
docker ps如何帮助我:docker rm-f$(docker ps-aq)
是我用来移除所有容器的一个简短命令
编辑:添加了
docker ps
对我的帮助 我也有同样的问题。我通过停止主机上的Apache2服务解决了这个问题。在我的情况下是这样的
启动userland代理时出错:侦听tcp 0.0.0.0:9000:绑定:地址已在使用中
我所需要的就是关闭php storm中的调试侦听功能我也有同样的问题,
docker compose down——rmi all
(在运行docker compose up的同一目录中)
帮助
UPD:注意-这还会删除您从中提取的本地docker图像。这对我有帮助:
docker compose down#如果存在docker-compose.yml,则停止当前目录上的容器
docker rm-fv$(docker ps-aq)#移除所有容器
sudolsof-i-P-n | grep#列出谁在使用端口
然后:
kill-9
(macOS)或sudo kill
(Linux)
来源:。我多次遇到同一问题。重新启动docker似乎可以解决问题我今天下午升级了docker,遇到了同样的问题。我试着重新启动docker,但没有成功
最后,我不得不重新启动我的电脑,它工作了。肯定是个bug。我通过重启Docker解决了这个问题
docker-compose down --rmi all
然后重新启动Linux/Unix计算机:
使用以下命令简单搜索linux实用程序
netstat -nlp | grep 8888
它将显示在此端口上运行的进程,然后使用该进程的PID(在行中查找PID)终止该进程
kill PID
选中
docker compose.yml
,可能是端口被指定了两次
version: '3'
services:
registry:
image: mysql:5.7
ports:
- "3306:3306" <--- remove either this line or next
- "127.0.0.1:3306:3306"
版本:“3”
服务:
注册处:
图片:mysql:5.7
端口:
- "3306:3306"
这是@DmitrySandalov答案的一个变体:我让tomcat/java在8080上运行,它需要继续运行。查看docker-compose.yml文件,并将8080的条目更改为我选择的另一个条目
nginx:
build: nginx
ports:
#- '8080:80' <-- original entry
- '8880:80'
- '8443:443'
nginx:
构建:nginx
端口:
#-“8080:80”在某些情况下,在停止容器或终止进程之前,对问题执行更深入的调试是至关重要的
考虑以下清单:
1) 检查您当前的docker compose环境
运行docker compose ps
如果另一个容器正在使用端口,请使用docker compose stop
停止该端口,或使用rm
替换stop
将其删除
2) 检查当前工作区外运行的容器
运行docker ps
查看主机下运行的所有容器的列表。
如果发现另一个容器正在使用该端口,可以使用docker stop
停止该端口
(*)因为您不在origincompose
环境的范围内-最好先使用它来收集有关您将要停止的容器的更多信息
3) 检查端口是否被主机上运行的其他进程使用
例如,如果端口为6379运行:
$ sudo netstat -ltnp | grep ':6379'
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 915/redis-server 12
tcp6 0 0 ::1:6379 :::* LISTEN 915/redis-server 12
(*)您还可以使用该命令,该命令主要用于检索有关由各种进程打开的文件的信息(我建议在此之前运行netstat
)
因此,如果输出高于PID
则为915
。现在您可以运行:
$ ps j 915
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 915 915 915 ? -1 Ssl 123 0:11 /usr/bin/redis-server 127.0.0.1:6379
并查看父进程的ID(PPID
)和执行命令。
您还可以运行:$pstree-s
以直观显示流程及其相关流程。
在本例中,我们可以看到进程可能是守护进程(PPID为1)-在这种情况下考虑运行:
A >代码> $CAT/PROC//STATION/COD>以获得关于进程的更深入的信息,例如进程产生的线程的数量、其能力等。
B)
$systemctl status
以查看导致创建特定流程的单元。如果服务不重要,您可以
4) 重新启动Docker服务
运行:sudo服务docker restart
5) 您到达了这一点,并且..
只有当它没有将系统置于危险中时,请考虑重新启动服务器。 如果您有相同的问题并且使用Windows:
在我的例子中,以我的方式进行的过程就是
grafana server.exe
。因为我首先下载了二进制版本并双击了可执行文件,现在它由用户SYSTEM
作为服务启动,而我不能taskkill
(无权限)
我必须去Windows的“服务管理器”搜索服务“Grafana”,并停止它。此后,端口3000不再被占用
希望能有所帮助。使用8888端口的是Jupiter,我不得不更改Jupiter笔记本的配置文件,使其在另一个端口上运行
列出使用该特定端口的用户。
sudo lsof-i-P-n | grep 9
您可以指定要Jupyter运行的端口,以取消注释/编辑以下内容
$ ps j 915
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 915 915 915 ? -1 Ssl 123 0:11 /usr/bin/redis-server 127.0.0.1:6379
version: '2.2'
services:
bind:
image: sameersbn/bind:latest
dns: 127.0.0.1
ports:
- 172.17.42.1:53:53/udp
- 172.17.42.1:10000:10000
volumes:
- "/srv/docker/bind:/data"
environment:
- 'ROOT_PASSWORD=secret'
network_mode: "host"
sudo service docker restart