Docker端口映射只有Ipv6端口导致Ipv4访问不通

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Docker端口映射只有Ipv6端口导致Ipv4访问不通

前言


我有一个朋友, 他在Dev 和 Test 服务器用Docker 搭建了Redis 供项目使用, 然后今天Test 环境的Redis 端口访问不通了, 在服务上可以正常连接, 真是离了个大齐, 让我们试试排查排查问题;

23abbc6cb0e149e18d77d83bdaeef9e2.png


正文

端口检测 lsof

已确认在本地用 telnet ip 6381 访问不通, 那就上服务上看看端口情况

Dev


a2a4db6acccd4c55ae365a898bfba592.png

Test


0748f418097247fe95529135417abbe3.png

Dev环境同时映射到Ipv6和Ipv4端口, Test环境仅映射到Ipv6, 那基本上就可以断定是环境问题了


容器状态 docker ps


既然端口映射有问题, 就先看下容器的状态

Dev

a222da3a1f614784a4e4bc21dc3b7f5a.png

Test


85dcdb01318f4335b882c76c299bb8f8.png

可以看到Dev同时映射了Ipv6和Ipv4, Test只映射了Ipv4, 这就能解释上面的情况了, 他说他搭建命令是一样的, emmm那就是环境问题, 看看Docker版本


Docker版本 docker -v


果然Test 版本是 Docker version 1.13.1, Dev 版本是Docker version 20.10.8, 这就能讲通为何同样的搭建命令但映射的不同;


但这又产生了一个新问题, 之前是这样是可以访问的, Ipv6 是可以兼容访问Ipv4的, Ipv4不能访问ipv6; 会不会是Ipv4的转发出了问题!


数据包转发 net.ipv4.ip_forward


当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能;


执行 /sbin/sysctl net.ipv4.ip_forward 查看:


net.ipv4.ip_forward = 0

果然没开, 那就把这个转发打开


临时修改 net.ipv4.ip_forward


可以用 sysctl -w net.ipv4.ip_forward=1

或者 echo 1 > /proc/sys/net/ipv4/ip_forward


重启Redis 容器 docker restart redis, 可以访问通了!

那就把这个配置永久生效


永久修改 net.ipv4.ip_forward


vim 修改文件/etc/sysctl.conf:

net.ipv4.ip_forward = 1


保存后调用 sysctl -p 生效, ok问题解决;

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
JSON 网络协议 数据安全/隐私保护
nps npc docker 部署 解决端口报错问题
nps npc docker 部署 解决端口报错问题
124 0
|
5月前
|
网络架构 Docker 容器
Docker容器动态添加端口
Docker容器动态添加端口
210 0
|
5月前
|
Docker 容器
Docker端口映射
Docker端口映射
|
13天前
|
关系型数据库 MySQL 数据安全/隐私保护
使用docker快速搭建wordpress服务,并指定域名访问
通过以上步骤,你可以使用Docker快速搭建WordPress服务,并通过指定的域名进行访问。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
19 1
|
29天前
|
前端开发 应用服务中间件 nginx
nginx中配置不输入端口(指定地址)访问项目的方法
nginx中配置不输入端口(指定地址)访问项目的方法
23 0
|
5月前
|
网络协议 应用服务中间件 Linux
LInux之在同一Tomcat下使用不同的端口号访问不同的项目
LInux之在同一Tomcat下使用不同的端口号访问不同的项目
59 0
|
1月前
|
Docker 容器
如何修改docker容器的端口映射
如何修改docker容器的端口映射
|
3月前
|
应用服务中间件 nginx Docker
docker安装nginx并暴露端口
【1月更文挑战第9天】docker安装nginx并暴露端口
138 0
|
4月前
|
应用服务中间件 nginx Docker
docker容器动态添加端口号
docker容器动态添加端口号
168 0
|
4月前
原生表格纵向滚动条
原生表格纵向滚动条