如何解决【docker端口映射不能访问】的问题?

这篇具有很好参考价值的文章主要介绍了如何解决【docker端口映射不能访问】的问题?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在企业数字化转型中,Docker 作为一种常用的容器技术,一个非常强大的功能就是通过端口映射将容器内的服务发布到外部。
然而,有时候我们会遇到无法从外部访问容器内部文件的问题,导致服务无法正常运行。下面将对这个问题进行深入剖析并给出解决方法。
docker映射出来端口访问不了,docker,容器,运维
 

一、问题描述:

我在服务器上启动了个nginx:latest的容器,使用命令如下:

[root@Hangz-Ecs1 ~]# docker run -id -p 8080:80 --name my_nginx nginx:latest
66559ae47822bcab638f12855d24f2b0beba51b24aa642c461f4ed2bb5de36c9

docker启动之后,使用netstat -ntalp | grep 8080 发现端口监听成功

[root@Hangz-Ecs1 ~]# netstat -ntalp | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1439/docker-proxy
tcp6       0      0 :::8080                 :::*                    LISTEN      1443/docker-proxy

然后就到客户机去发起请求发现请求不成功,提示连接失败,然后使用telnet发现8080端口不通,这个时候去检查firewalld 和selinux发现都是处于关闭状态,在服务器上telnet8080端口发现正常通信,使用iptables -t nat -L检查iptables转发正常,但是就是不通

[root@Hangz-Ecs1 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.18.0.0/16        anywhere
MASQUERADE  all  --  172.17.0.0/16        anywhere
MASQUERADE  tcp  --  172.18.0.2           172.18.0.2           tcp dpt:10514
MASQUERADE  tcp  --  172.18.0.10          172.18.0.10          tcp dpt:webcache
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:http

Chain DOCKER (2 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere
DNAT       tcp  --  anywhere             localhost            tcp dpt:fujitsu-dtcns to:172.18.0.2:10514
DNAT       tcp  --  anywhere             anywhere             tcp dpt:http to:172.18.0.10:8080

二、解决办法:


根据上面问题排查分析后 ,最后发现是转发出问题了,Linux转发是要开启内核转发功能net.ipv4.ip_forward的,于是检查内核转发是否打开

[root@Hangz-Ecs1 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

这里发现内核转发是处于关闭状态的(0代表内核转发没有打开)
这里手动echo命令开启内核转发,并再次查询内核转发是否开启

[root@Hangz-Ecs1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@Hangz-Ecs1 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

这样子就代表我们的内核转发已经可以正常使用了!

关于奇墨ITQM

奇墨科技是全域数字资产质量管理平台及服务商,在全球创新提出了ITQM理念并自研了奇墨ITQM平台、ACS全云服务、QAPI、QTools工具等一系列数智化产品与服务,目前已帮助大量世界500强企业低成本引入全新IT治理体系和提升数字化管理能力。

旗下的奇墨ITQM平台,是业界第一个成功通过中国信通院《可信云•云成本优化工具能力要求第二部分 混合多云成本优化工具》评估的IT管理平台,可为企业提供FinOps成本优化、AIOps智能运维、全云管理、数据安全等QAPI能力,并通过自上而下的数字化管理模式、自动化的运维管理流程、专业化的解决方案与服务,助力企业加速“业务-技术-组织”之间的高效连接和协同,有效降低云成本支出、提高IT资源利用率和优化数字化业务决策,全面企业提升数字化价值。

docker映射出来端口访问不了,docker,容器,运维文章来源地址https://www.toymoban.com/news/detail-757034.html

到了这里,关于如何解决【docker端口映射不能访问】的问题?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 虚拟机中docker安装rabbitmq 宿主机不能访问rabbitmq管理界面问题解决

    1, MacOS的操作系统, 通过Vmware Fusion虚拟机软件, 安装了Centos7操作系统, 里面安装了docker engine(1.13.1); 2, 试验rabbitmq, 下载了rabbit:latest镜像 3, 通过如下命令启动rabbitmq 4, 启动之后, 在宿主机浏览器测试访问虚拟机中的rabbitmq http://192.168.88.100:15672/ 试验结果: 拒绝访问 1, 检查centos-l

    2024年02月10日
    浏览(23)
  • Docker:rabbitmq启动镜像后访问15672端口无法显示管理界面问题解决

    在Linux Ubuntu 18.04上通过Docker安装配置Rabbitmq后,按照网上提供的教程经验,发现打开 http://{ip}+15672无法打开相关的Rabbitmq Web管理平台界面 相关博客 Ubuntu安装Docker Docker安装Rabbitmq 这里无法通过15672端口获取相关文件可以划分为两个方向,笔者将其归类为外部因素和Rabbitmq内部原

    2024年02月11日
    浏览(19)
  • 如何修改docker容器的端口映射

    要修改 Docker 容器的端口映射,你需要停止并删除现有的容器,然后使用新的端口映射重新运行容器。以下是详细步骤: 停止容器 : 使用 docker stop 命令停止正在运行的容器。替换 container_id 为你要停止的容器的 ID 或者容器的名称。 删除容器 : 使用 docker rm 命令删除已停止

    2024年02月22日
    浏览(20)
  • 本地appserv外挂网址如何让外网访问?快解析端口映射

    一、appserv是什么?  AppServ 是 PHP 网页架站工具组合包,作者将一些网络上免费的架站资源重新包装成单一的安装程序,以方便初学者快速完成架站,AppServ 所包含的软件有:Apache[、Apache Monitor、PHP、MySQL、phpMyAdmin等。如果您的本地机器没有安装过php、mysql等系统,那么用这个

    2024年02月16日
    浏览(20)
  • 不在路由器上做端口映射,如何访问局域网内网站

    假设现在外网有一台ADSL直接拨号上网的电脑,所获得的是公网IP。然后它想访问局域网内的电脑上面的网站,那么就需要在路由器上做端口映射。在路由器上做端口映射的具体规则是:将所有发向自己端口的数据,都转发到内网的计算机。 访问过程如下: ① 公网电脑向路由

    2024年02月13日
    浏览(16)
  • nginx部署本地项目如何让异地公网访问?服务器端口映射配置!

    接触过IIS或apache的小伙伴们, 对 nginx 是比较容易理解的, nginx有点类似,又有所差异,在选择使用时根据自己本地应用场景来部署使用即可。通过一些对比可能会更加清楚了解: 1 . nginx是轻量级,比apache占用更少的内存以及资源 2 . apache对php支持较简单,apache组件比nginx多

    2024年02月16日
    浏览(28)
  • 【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!

        😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 😘博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不

    2024年02月03日
    浏览(24)
  • 如何远程访问本地jupyter notebook服务器,实现无公网IP端口映射

    转载自远控源码文章:公网远程访问jupyter notebook【cpolar内网穿透】 Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如Python、R、Julia等。它在数据科学、机器学习、深度学习、教育和文档编写等领域都有很广泛的应用。 重要的是,Jupyter Notebook可以

    2024年02月03日
    浏览(20)
  • docker 容器如何查看正在运行容器的端口映射

    1、查看docker容器的版本 2、查看正在运行的容器 3、查看容器的端口映射 总结:到此就完成了查看正在运行容器的端口映射.

    2024年02月12日
    浏览(25)
  • 本地主机搭建服务器后如何让外网访问?快解析内网端口映射

    本地主机搭建应用 、 部署服务器后,在局域网 内是可以直接通过计算机内网IP网络地址进行连接访问 的 ,但在外网电脑和设备如何访问呢?由于内网环境下, 无法提供 公网IP使用,外网访问内网就需要一个内外网转换的介质。这里介绍一种内网变公网的内网映射外网方案

    2024年02月08日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包