Docker绑定端口后仍无法远程直接访问的解决方法
作者:热心市民梁先生
在Docker中,如果容器的端口绑定错误或只绑定到了容器的内部IP地址,将导致外部主机无法访问该端口,所以本文小编给大家介绍了Docker绑定端口后仍无法远程直接访问的解决方法,需要的朋友可以参考下
在docker中拉取镜像后启动,启动脚本如下
启动docker
docker run --name nacos-server \ -p 8848:8848 \ -p 7848:7848 \ -p 9848:9848 \ -p 9849:9849 \ --privileged=true \ --restart=always \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -v /mydata/nacos/logs:/home/nacos/logs \ -v /mydata/nacos/conf/application.properties:/home/nacos/conf/application.properties \ -d nacos/nacos-server:v2.4.2
其他主机正常访问到控制台
启动zipkin
docker run -d --name zipkin d7cf93f08bd4 \ -e STORAGE_TYPE=mysql \ -e MYSQL_DB=zipkin \ -e MYSQL_USER=root \ -e MYSQL_PASS=yoostar403 \ -e MYSQL_HOST=mysql \ -e MYSQL_TCP_PORT=3306 \ -e KAFKA_BOOTSTRAP_SERVERS=kafka:9092 \ -e STORAGE_TYPE=elasticsearch \ -e ES_HOSTS=http://elasticsearch:9200 \ -p 9411:9411 \
但是同上面nacos的访问,到9411却无法访问拒绝连接。同时看到镜像的进程如下
应该是一个默认绑定了0.0.0.0允许所有通过宿主机ip访问该端口,zipkin则没有。为此我问了GPT,得到如下回答:
根据您提供的信息,问题可能出在 Zipkin 容器的端口绑定配置上。您可以尝试以下步骤来配置 Zipkin 容器,使其支持其他主机访问:
检查 Zipkin 容器的端口绑定:
- 运行
docker ps
命令查看 Zipkin 容器的端口绑定情况。确保 Zipkin 容器的端口绑定正确,包括将端口绑定到主机的 IP 地址上。 - 如果 Zipkin 容器的端口绑定只是绑定到容器自身的 IP 地址(比如
127.0.0.1
),那么其他主机无法直接访问该端口。
修改 Zipkin 容器的端口绑定:
- 如果 Zipkin 容器的端口绑定只包含容器的内部 IP 地址,您需要修改端口绑定配置,将端口绑定到主机的 IP 地址上,以便其他主机可以访问。
- 您可以通过修改 Docker 容器启动命令中的
-p
选项来实现端口绑定。例如,将端口9410
绑定到主机的所有 IP 地址可以这样做:-p 9410:9410
。
重新启动 Zipkin 容器:
- 修改端口绑定配置后,您需要重新启动 Zipkin 容器,使新的配置生效。可以使用
docker restart <container_name>
命令来重新启动容器。
检查防火墙设置:
- 确保主机上的防火墙允许流量通过 Zipkin 容器使用的端口。如果有防火墙规则限制了流量,您需要相应地调整防火墙设置。
通过以上步骤,您应该能够配置 Zipkin 容器,使其支持其他主机访问。如果问题仍然存在,请提供更多详细信息,以便更好地帮助您解决问题。
看上面最有可能的应该就是第一点了,为此停止运行中的容器并删除,重新启动,在后面多加了指定0.0.0.0绑定端口映射。
docker run -d --name zipkin \ -e STORAGE_TYPE=mysql \ -e MYSQL_DB=zipkin \ -e MYSQL_USER=root \ -e MYSQL_PASS=yoostar403 \ -e MYSQL_HOST=mysql \ -e MYSQL_TCP_PORT=3306 \ -e KAFKA_BOOTSTRAP_SERVERS=kafka:9092 \ -e STORAGE_TYPE=elasticsearch \ -e ES_HOSTS=http://elasticsearch:9200 \ -p 0.0.0.0:9411:9411 \ d7cf93f08bd4
就是上面的 -p 0.0.0.0:9411:9411 \ 至此可以正常访问,至于为什么nacos不需要指定,不应该都会默认指定的吗。
以上就是Docker绑定端口后仍无法远程直接访问的解决方法的详细内容,更多关于Docker无法远程直接访问的资料请关注脚本之家其它相关文章!