百度云服务器无法访问docker容器中的tomcat服务解决方案

解决Docker网络映射问题

问题背景:
1、百度云服务器环境,服务器的防火墙端口已打开
2、百度云的安全组策略的入站规则已正确设置

问题描述:
1、宿主机(本机)环境的tomcat可以正常启动,并且可以通过外网环境访问到
2、宿主机通过docker开启的tomcat使用curl127.0.0.1:8080能访问到,但是外网环境无法访问

解决方案:
在云服务器中使用docker的网络端口映射会导致这个问题, 使用
docker run -d --net=host --name tomcat-test tomcat:latest 直接不虚拟网卡,使用宿主机的网络即可。并且可以保证容器中能够访问到外网!

1、启动zookeeper
docker run -d --net=host --name zookeeper -e “ZOO_ADMINSERVER_ENABLED=false” --restart always zookeeper:latest
2、启动redis
docker run -d --net=host --name --restart always redis redis:latest
3、启动mongo
docker run -id --net=host --name --restart always mongo mongo:latest
4、启动rabbitMq,账号密码为admin/admin
docker run -d --net=host --name rabbitmq3.7.7 --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3.7.7-management
5、启动tomcat
docker run -d --net=host --name tomcat8080 -v /docker-data/tomcat/8080:/usr/local/tomcat/webapps tomcat
6、启动mysql
docker run -d --net=host -v /docker-data/mysql/mydata/data:/var/lib/mysql -v /docker-data/mysql/mydata/conf:/etc/mysql -v /docker-data/mysql/mydata/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql --restart=always mysql:5.7

查看容器内生效的变量,方便通过-e进行启动时的更改
docker exec 984 env

Docker容器中启动Tomcat后,虚拟机无法访问Tomcat可能是由于以下几个原因: 1. **端口映射问题**: - 确保在启动Docker容器时,已经正确地将Tomcat的端口映射到宿主机的端口。例如,使用`-p`参数将容器的8080端口映射到宿主机的8080端口: ```bash docker run -d -p 8080:8080 tomcat ``` 2. **防火墙设置**: - 检查宿主机的防火墙设置,确保允许访问映射的端口。例如,如果使用的是Linux,可以使用`ufw`命令开放端口: ```bash sudo ufw allow 8080 ``` 3. **Tomcat配置**: - 检查Tomcat的配置文件(`server.xml`),确保Tomcat绑定的IP地址允许外部访问。通常,Tomcat默认绑定到所有网络接口(`0.0.0.0`),但如果配置为仅绑定到`localhost`,则外部无法访问。 4. **容器网络模式**: - 确保Docker容器的网络模式设置正确。如果使用了自定义网络模式,确保网络配置允许外部访问。 5. **宿主机IP访问**: - 在虚拟机中,使用宿主机的IP地址而不是`localhost`或`127.0.0.1`来访问Tomcat。例如,如果宿主机的IP地址是`192.168.1.100`,则在浏览器中访问`http://192.168.1.100:8080`。 6. **Docker网络**: - 检查Docker的网络配置,确保容器网络允许外部访问。可以使用以下命令查看Docker网络: ```bash docker network ls docker network inspect <network_name> ``` 通过以上步骤,可以逐步排查并解决Docker容器Tomcat无法访问的问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值