docker:来自守护程序的错误响应:地址已在使用中

时间:2018-10-12 05:24:46

标签: docker

我正在使用以下命令创建容器

docker run -it -p 81:80 -p 3307:3306 --net mynet123 --ip 172.18.0.22 -v /opt/lampp/htdocs:/var/www/html lamp-setia bash

有人可以分享解决方案吗?

预先感谢

4 个答案:

答案 0 :(得分:3)

您可以通过运行命令来检查现有端口

lsof -i tcp:81

lsof -i tcp:3307

如有必要,您可以使用命令杀死该进程

kill -9 [pid number]

之后,您可以尝试重新运行该docker命令。

答案 1 :(得分:1)

似乎其他一些进程已经在保留您要与容器映射的主机端口。您可以考虑使用netstat -aon来确定是否存在现有进程在Docker主机上保存端口 81 3307

答案 2 :(得分:1)

您在docker run命令中提供的端口可能已分配给其他进程。请找到那里正在运行的东西。如果有不重要的事情,请杀死它。或者,您可以继续使用可用端口。

请在下面找到快照以供参考, enter image description here

致谢

答案 3 :(得分:0)

另一个完全相同的错误情况是使用IP地址时。在我的设置中,我有这样的网络设置:

docker network create --subnet 172.28.5.0/24 cluster-test-net

并且我试图按以下方式启动我的docker容器:

docker run -d --name wildfly1 --ip 172.28.5.1 -h wildfly1 -p 8080:8080 -p 9990:9990 --network=cluster-test-net wildfly-cluster-image

我收到错误消息的原因是docker已经为主机本身分配了IP地址172.28.5.1。我注意到当我在主机上运行ifconfig并在结果中找到此行时:

br-bb89994f6a73: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.28.5.1  netmask 255.255.255.0  broadcast 172.28.5.255
        inet6 fe80::42:a2ff:fecd:81e9  prefixlen 64  scopeid 0x20<link>
        ether 02:42:a2:cd:81:e9  txqueuelen 0  (Ethernet)
        RX packets 4394  bytes 4695729 (4.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2342  bytes 175071 (175.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

所以我只是通过为Docker容器选择其他IP地址来解决此问题:

docker run -d --name wildfly1 --ip 172.28.5.10 -h wildfly1 -p 8080:8080 -p 9990:9990 --network=cluster-test-net wildfly-cluster-image