当我在Docker项目中运行Docker -compose up时,它失败了,并显示以下消息:
启动userland代理时错误:监听tcp 0.0.0.0:3000:绑定:地址已在使用
netstat -pna | grep 3000
显示了这个:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
我已经试过docker-compose down了,但没用。
当我在Docker项目中运行Docker -compose up时,它失败了,并显示以下消息:
启动userland代理时错误:监听tcp 0.0.0.0:3000:绑定:地址已在使用
netstat -pna | grep 3000
显示了这个:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -
我已经试过docker-compose down了,但没用。
当前回答
我也有同样的问题。我通过停止主机上的Apache2服务来解决这个问题。
其他回答
改变network_mode:“bridge”到“host”。
这与
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 netstat -pna | grep 3000帮助您解决了这个问题。
而在其他情况下(我自己遇到过很多次),大多数情况下是相同的容器在其他实例中运行。在这种情况下,docker ps非常有用,因为我经常让相同的容器在其他目录中运行,然后在其他地方再次尝试运行,在那里使用相同的容器名称。
docker ps如何帮助我:
docker rm -f $(docker ps -aq)是我用来删除所有容器的简短命令。
编辑:增加如何docker ps帮助我。
让我再加一个例子,因为我有同样的错误,目前列出的解决方案都不可行:
serv1:
...
networks:
privnet:
ipv4_address: 10.10.100.2
...
serv2:
...
# no IP assignment, no dependencies
networks:
privnet:
ipam:
driver: default
config:
- subnet: 10.10.100.0/24
根据init顺序,serv2可能会在serv1启动之前被分配IP 10.10.100.2,所以我只是手动为所有容器分配IP以避免错误。也许还有其他更优雅的方式。
在我的机器上,这个netstat -tulpn命令没有显示正在使用的端口(8080)的PID,所以我不能杀死它,杀死容器并重新启动计算机不起作用。所以service docker restart命令为我重新启动docker (ubuntu),端口不再使用,我是一个快乐的家伙,去吃午饭了。
我今天下午升级了我的码头机,遇到了同样的问题。我尝试重新启动docker,但没有运气。
最后,我不得不重新启动我的电脑,它工作了。绝对是个bug。