我正在使用以下命令创建容器
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
有人可以分享解决方案吗?
预先感谢
答案 0 :(得分:3)
您可以通过运行命令来检查现有端口
lsof -i tcp:81
和
lsof -i tcp:3307
如有必要,您可以使用命令杀死该进程
kill -9 [pid number]
之后,您可以尝试重新运行该docker命令。
答案 1 :(得分:1)
似乎其他一些进程已经在保留您要与容器映射的主机端口。您可以考虑使用netstat -aon
来确定是否存在现有进程在Docker主机上保存端口 81 和 3307 。
答案 2 :(得分:1)
答案 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