概述
这是一个比较头痛的问题,描述一下症状!
1.docker ps查看容器是正常运行的
2.端口是开放的,或者防火墙是关闭的
3.如果是云厂商服务器的如阿里云,腾讯云,华为云,等安全组都是开放的
4.装了宝塔的,宝塔面板上的安全端口也是开放的
5.直接运行程序如java项目是可以直接访问的
6.同样的步骤,命令在阿里云,腾讯云、华为云都是可以的
7.如挂载的是redis、mysql或者其他的都能从服务器内部链接进去,并且都能操作就是远程连接不上!
8.外网ping主机都能ping通
这样额问题是由于docker的ip问题,这种情况大多实在采用国外服务器(虚拟主机),或者自己测试的虚拟机。
不要问我为什么把问题描述的这么清楚,以为上面的8点我都试过,国外虚拟主机和测试虚拟机我也都刚好碰到,是不是很神奇,我也觉得,可能恰好是我这些情况都碰到了才找到解决方案!!!
1.先检查端口是否打开,或者防火墙关闭
查询指定端口是否已开(提示 yes,表示开启;no表示未开启。)
firewall-cmd --query-port=666/tcp
firewall-cmd --zone=public --query-port=21/tcp
(当提示firewalld is not running代表防火墙未开启)
添加指定需要开放的端口:
firewall-cmd --add-port=123/tcp --permanent
开放完了重载
重载入添加的端口:---重新加载防火墙
firewall-cmd --reload
防火墙
查看防火墙
systemctl status firewalld
未开启:Active: inactive (dead)
开启防火墙
systemctl start firewalld
没有任何提示表示开启
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
如果第一步操作能远程连接上下面的就不用看了
但是这里注意Mysql比较特殊
mysql使用docker启动后还需要设置远程连接密码
1.进入容器(进入容器出现mysql> 输入的命令记得打;表示结束)
docker exec -it mysql /bin/bash
2.在容器中修改mysql配置
mysql -r -p
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '28083528';
exit
exit
2.查看ip转发问题
查看ip是否装发
sysctl net.ipv4.ip_forward
显示net.ipv4.ip_forward=0则表示未打开,1代表打开无需操作
如果是0
at /proc/sys/net/ipv4/ip_forward0
如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开,
要想打开IP转发功能,可以直接修改上述文件:echo 1 > /proc/sys/net/ipv4/ip_forward
把文件的内容由0修改为1。禁用IP转发则把1改为0。
上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改
/etc/sysctl.conf文件,修改下面一行的值:
net.ipv4.ip_forward = 1
修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效:
sysctl -p /etc/sysctl.conf
进行了上面的配置后,IP转发功能就永久开启了。
3.如果ip转发没问题还是无法远程连接/访问这时就要ping一下,虚拟机ping不通的话修改网络连接状态
换成NAT模式
4.如果还是不行,那么重点来了,配置docker的ip
这个前面要查看ip,使用ipconfig或者ip addr
找到docker0这个网卡,将这个ip替换下面的sudo ip addr add 172.16.10.1/24 dev docker0即可
docker容器启动后外部无法连接
1第一种
sudo service docker stop
sudo ip link set dev docker0 down %关闭docker虚拟网卡
sudo brctl delbr docker0
sudo iptables -t nat -F POSTROUTING
sudo brctl addbr docker0
sudo ip addr add 172.16.10.1/24 dev docker0
sudo ip link set dev docker0 up %开启docker虚拟网卡
systemctl restart docker
brctl命令需要安装: yum install -y bridge-utils
2.第二种
systemctl stop docker
ifconfig docker0 down
brctl delbr docker0
systemctl start docker
最后
以上就是有魅力学姐为你收集整理的docker部署的容器远程无法连接的全部内容,希望文章能够帮你解决docker部署的容器远程无法连接所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复