首页 > 其他分享 >如何解决docker端口映射不能访问的问题?

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

时间:2023-09-18 12:02:38浏览次数:44  
标签:8080 -- tcp 访问 anywhere 转发 172.18 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


二、【docker端口映射不能正常访问】的解决方法:

根据上面问题排查分析后 ,最后发现是转发出问题了,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

标签:8080,--,tcp,访问,anywhere,转发,172.18,docker,端口映射
From: https://blog.51cto.com/u_16239222/7508756

相关文章

  • win10下docker安装 ubuntu18.04.
      参考 Win10使用Docker安装Ubuntu环境-知乎(zhihu.com)旧版WSL的手动安装步骤|MicrosoftLearn......
  • docker install ubuntu ssh
    https://tecadmin.net/setting-up-ubuntu-docker-container-with-ssh-access/ Dockerisanopen-sourceplatformthatallowsdeveloperstoautomatethedeployment,scaling,andmanagementofapplications.Itdoessobycreatinglightweight,self-sufficientco......
  • k8s之docker基础+部署
    docker基础+部署1、docker基础概念1、统一标准应用构建程序打包dockerbuild...images应用分享镜像存放仓库dockerhub应用运行统一镜像dockerrun容器化2、资源隔离cpu、内存资源隔离网络隔离用户、用户组隔离...2、架构docker_host安......
  • 配置公网和私网用户通过公网口的IP地址访问内部服务器和互联网(企业有独立IP地址)
    组网需求如图所示,某小型企业内网部署了一台路由器、一台FTP服务器和一台Web服务器。路由器作为接入网关,为下挂的内网用户提供上网服务,主要包括浏览网页、使用即时通信工具、观看视频、访问邮箱等。企业内网的FTP/Web服务器对内网和外网用户分别提供FTP服务和WWW服务。由于IP地址资......
  • 【.NET8】访问私有成员新姿势UnsafeAccessor(上)
    前言前几天在.NET性能优化群里面,有群友聊到了.NET8新增的一个特性,这个类叫UnsafeAccessor,有很多群友都不知道这个特性是干嘛的,所以我就想写一篇文章来带大家了解一下这个特性。其实在很早之前我就有关注到这个特殊的特性,但是当时.NET8还没有正式发布,所以我也没有写文章,现在.NET8......
  • kali linux安装配置与终端访问指导
     1、已安装VMware虚拟机查看此编博客:虚拟机VMware12安装激活(超详细教程)适用于Win7版本2、下载kaliLinux包进入:https://www.kali.org/点击Download 点击框起来的 点击下载(https://cdimage.kali.org/kali-2023.3/kali-linux-2023.3-vmware-amd64.7z) 下载后进行压缩,......
  • Docker分享
    前置知识本篇文章主要分享容器技术依赖的Namespace,在开始之前,有一些前置知识需要先阐明,也许它们很零碎,但开始之前我还是希望你能够完全理解这些概念。前置知识这一段除了补短之外,还有一个目的,把一个很多人没解释清楚的问题解释清楚:什么是容器,和虚拟机有什么区别?进程树模型:fo......
  • Docker中如何将容器重新打包成镜像
    最近做项目,建好了不少不同规则的容器。需要以后重复利用,于是重新打包为镜像。使用以下命令,查看容器名称:dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES3e08cb5b24f8gareenbeam/kyv10:v4......
  • 使用TestContainers在Docker中进行集成测试
    现代软件应用很少独立工作。典型的应用程序会与几个外部系统进行通信,如:数据库、消息系统、缓存提供商其他第三方服务。你应该编写测试确保一切正常运行。单元测试有助于隔离地测试业务逻辑,不涉及任何外部服务。它们易于编写并提供几乎即时的反馈。有了单元测试还不够,集......
  • ⛳ Docker 安装、配置和详细使用教程-Win10专业版
    ⛳Docker安装、配置和详细使用教程-Win10专业版......