我是靠谱客的博主 有魅力学姐,最近开发中收集的这篇文章主要介绍docker部署的容器远程无法连接,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这是一个比较头痛的问题,描述一下症状!

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部署的容器远程无法连接所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部