无法访问docker容器内的端口(docker端口映射及外部无法访问问题)
无法访问docker容器内的端口
docker端口映射及外部无法访问问题docker容器内提供服务并监听8888端口,要使外部能够访问,需要做端口映射。
docker run -it --rm -p 8888:8888 server:v1
此时出现问题,在虚机A上部署后,在A内能够访问8888端口服务,但是在B却不能访问。
这应该是由于请求被拦截。
一、查看firewall-cmd --state
如果输出的是“not running”则FirewallD没有在运行,且所有的防护策略都没有启动,那么可以排除防火墙阻断连接的情况了。
如果输出的是“running”,表示当前FirewallD正在运行,需要再输入下面的命令查看现在开放了哪些端口和服务:
firewall-cmd --list-ports firewall-cmd --list-services
解决方案有两种:
1.关闭FirewallD服务:
如果您不需要防火墙,那直接关掉FirewallD服务就好了
systemctl stop firewalld.service
2.添加策略对外打开指定的端口:
比如我们现在要打开对外5000/tcp端口,可以使用下面的命令:
firewall-cmd --add-port=5000/tcp --permanent firewall-cmd --reload
如果只是临时打开端口,去掉第一行命令中的“--permanent”参数,那么当再次重启FirewallD服务时,本策略将失效。
二、ip转发没有打开
sysctl net.ipv4.ip_forward
显示net.ipv4.ip_forward=0则表示未打开。
三、service iptables打开并拦截了
可关闭service iptables
service iptables stop
若docker run时出现错误:
iptables: No chain/target/match by that name.
则只需重启docker服务即可
service docker restart
或者:
#设置iptables防火墙为开机启动项 systemctl enable iptables.service #启动防火墙使配置文件生效 systemctl start iptables.service #停止防火墙 systemctl stop iptables.service #重启防火墙使配置文件生效 systemctl restart iptables.service
最终版本:
启动docker并进行端口映射后,docker会在iptables中添加DNAT规则,将收到的对应端口的包转换ip并进行转发,同时添加规则将所有来自docker网域的ip进行转换。
但是在Centos7上出现docker可以正常访问外网,但是外网发出的请求在经过eth1接收转发后送达不到docker0,或者送到却出现(oui Unknown)的状况。暂时不清楚这到底是为什么经过DNAT后无法送达docker0.
最终解决办法是在启动docker后,重启iptables
service iptables restart
清空docker添加的所有规则,而后添加规则
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
将所有来自docker的包172.17.0.0/16的ip替换为本机ip并发送,以达到docker访问外网的目的。
到此这篇关于docker端口映射及外部无法访问问题的文章就介绍到这了,更多相关docker端口映射及外部访问内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- jenkins集成docker自动部署(详解docker部署Jenkins新手使用教程)
- dockernginx服务器教程(Docker镜像+nginx 部署 vue 项目的方法)
- docker部署golang(如何使用Docker部署Go Web应用的实现)
- jenkins回滚docker容器(关于docker部署的jenkins跑git上的程序的问题)
- ideadocker调试(Idea部署远程Docker并配置文件)
- docker ip地址分配(docker添加网桥并设置ip地址范围操作)
- docker构建本地镜像(Docker创建本地镜像实现方法解析)
- dockerregistry原理(解决Docker x509 insecure registry的问题)
- docker运行环境centos(如何在centos的docker里安装jupyter并开放端口)
- docker的配置与使用(docker之docker-machine用法详解)
- 安全进入docker容器的方法(使用docker部署一个简单的c/c++程序的方法)
- docker运行镜像端口(docker镜像访问本地elasticsearch端口操作)
- docker离线安装步骤(Windows下Docker安装各种软件的详细过程)
- docker部署mysql并且自动启动(Docker 部署 Mysql8.0的方法示例)
- ubuntu下使用vscode(使用Vscode结合docker进行开发的详细过程)
- 怎么用docker中的mysql连接数据库(解决Docker之mysql容器数据库更改不生效的问题)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
- SCI检索 SSCI检索 EI检索 ISTP检索 CSCD检索简介(SCI检索SSCI检索EI检索)
热门推荐
- linuxdocker命令使用教程(seata docker 高可用部署的详细介绍)
- html5带放大镜的搜索代码(html5借用repeating-linear-gradient实现一把刻度尺ruler)
- php自定义函数返回多少个值(PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法)
- phpstudy数据库搭建教程交流(phpStudy V8如何修改数据库root密码)
- python抖音视频收集(python制作抖音代码舞)
- php的底层分析(PHP反射原理与用法深入分析)
- laravel5开发规范(laravel5.1框架基础之路由详解)
- 阿里云ftp搭建(阿里云服务器搭建FTP服务器图文教程windows)
- vue各种模块(一篇文章学会Vue中间件管道)
- CSS中z-index层叠顺序
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9