问题描述
- IP地址是 http://192.168.81.143 的主机上安装了CentOS8。
- CentOS8里面安装了Docker,并使用docker run命令从tomcat镜像创建新容器并映射端口:
docker run --name=firsttom -it -p 8888:8080 tomcat
- 按道理,在主机使用 http://http://192.168.81.143:8888 应该能够访问firsttom容器的tomcat才对,然而却无法访问。
解决过程
- 首先想到的就是防火墙问题。于是我在主机上关闭了防火墙:
systemctl stop firewalld
别说,这样一来firsttom容器的tomcat还真可以访问了。
- 我不想关闭防火墙,所以就想到把8888端口在防火墙里面放行:
firewall-cmd --zone=public --add-port=8066/tcp --permanent firewall-cmd --reload
按道理这样就应该能访问了,然而防火墙打开后,发现仍然无法访问。
- 于是乎就开始了各种搜索,排除了各种不靠谱方案后,终于找到解决方法:
# 把docker0网卡添加到trusted域 firewall-cmd --permanent --zone=trusted --change-interface=docker0 # 重启加载配置 firewall-cmd --reload
注:这个方法对CentOS7也有效