docker容器启动后外部浏览器无法访问的问题

 更新时间:2026年06月12日 09:02:49   作者:zy158194  
本文主要介绍了docker容器启动后外部浏览器无法访问的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题描述:

  1. docker nginx容器启动后外部使用浏览器无法访问,直接在服务器上可以访问
  2. 停掉nginx容器,用相同的端口启动自己的应用,外部使用浏览器能直接访问

排查:

  1. 端口问题?既然使用自己的应用启动后,外部是能访问的通的,说明端口是开放的;排除
  2. 容器内应用只监听了 127.0.0.1?我使用的官方nginx容器,只做了端口映射,默认配置的是0.0.0.0,而且我在服务器上使用服务器IP访问也是通的;这个也排除
  3. iptables针对 Docker 网桥的限制
    使用下面命令查看
sudo iptables -L FORWARD -n

结果如下:

[root@localhost bin]# sudo iptables -L FORWARD -n
Chain FORWARD (policy DROP)
target     prot opt source               destination 

问题分析

Chain FORWARD的意思是转发链,policy DROP的意思是如果没有明确的规则允许当前请求通过,那么防火墙将直接丢弃该数据包;
外部访问docker容器默认情况下是先请求宿主机的端口,然后宿主机再转发到docker容器的对应端口,也就是说走的是FORWARD链,而防火墙刚好禁止了FORWARD链,所有请求docker容器无法请求;而应用是直接占用服务器端口对外服务的,也即是走的INPUT链,防火墙没有禁止INPUT链,所以应用能访问。

解决办法

第一种:关闭iptables,不建议
第二种:重启docker即可,Docker守护进程在启动时会自动检测 iptables 并添加必要的转发规则

sudo systemctl restart docker

重启后查看FORWARD规则

[root@localhost bin]# sudo iptables -L FORWARD -n
Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION-STAGE-1  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

可以看到docker自动添加了允许访问的规则

启动docker容器后,使用浏览器也能正常访问了,问题解决

到此这篇关于docker容器启动后外部浏览器无法访问的问题的文章就介绍到这了,更多相关docker启动外部浏览器无法访问内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker中如何删除image(镜像)的方法

    Docker中如何删除image(镜像)的方法

    这篇文章主要介绍了Docker中如何删除image(镜像)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker如何实现容器间的安全通信方式

    Docker如何实现容器间的安全通信方式

    文章介绍了使用自定义网络、网络访问控制、数据加密、认证与授权机制、安全更新与漏洞管理等方法来提升Docker容器的安全性
    2024-11-11
  • 高效Docker镜像构建与部署实战指南

    高效Docker镜像构建与部署实战指南

    在微服务架构和容器化快速发展的背景下,Docker镜像已成为应用发布的标准单元,本文将从镜像构建到部署全流程,分享团队的实战经验与踩坑解决方案
    2025-07-07
  • Mac上使用Docker搭建kafka集群方式

    Mac上使用Docker搭建kafka集群方式

    这篇文章主要介绍了Mac上使用Docker搭建kafka集群方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 限制 Docker Desktop 的资源使用

    限制 Docker Desktop 的资源使用

    本文主要介绍了限制 Docker Desktop 的资源使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • Docker跨主机容器通信overlay实现过程详解

    Docker跨主机容器通信overlay实现过程详解

    这篇文章主要介绍了Docker跨主机容器通信overlay实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 使用docker-compose.yml构建镜像的方法

    使用docker-compose.yml构建镜像的方法

    docker-compose是docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用,这篇文章主要介绍了使用docker-compose.yml构建镜像的方法,需要的朋友可以参考下
    2023-05-05
  • Docker容器中使用SSL/TLS方式

    Docker容器中使用SSL/TLS方式

    这篇文章主要介绍了Docker容器中使用SSL/TLS方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-06-06
  • docker-compose如何定义容器的ip

    docker-compose如何定义容器的ip

    这篇文章主要介绍了docker-compose如何定义容器的ip问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker重启命令的使用详解

    Docker重启命令的使用详解

    Docker重启命令包括使用systemctl、service命令重启Docker服务,以及使用dockerrestart命令重启Docker容器,在重启Docker服务之前,建议先停止所有正在运行的容器,并确保做好相应的准备和备份
    2025-03-03

最新评论