Ubuntu 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项目中运行
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
停止该端口
(*)因为您不在origin
compose
环境的范围内-最好先使用它来收集有关您将要停止的容器的更多信息

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