type
status
date
slug
summary
tags
category
icon
password
巴拉巴拉
Docker 网络模式
Docker 默认有多种网络模式,其中常用的包括:
- Bridge 模式(默认):容器通过一个虚拟网桥与宿主机通信。每个容器都有自己的独立网络命名空间,
localhost只指向容器内部的地址,而不指向宿主机。
- Host 模式:容器与宿主机共享网络命名空间,容器直接使用宿主机的网络接口,
localhost在这种模式下指向宿主机的localhost。
问题原因:网络隔离
当
cloudflared 容器运行在默认的 bridge 模式下时,容器与宿主机的网络是隔离的:- 在
bridge模式下,localhost对容器来说是它自己的网络命名空间。尝试访问localhost:15432实际上是在访问容器内部的localhost,而不是宿主机的地址。
- 如果你想在
bridge网络模式下从容器访问宿主机的服务,不能直接使用localhost,而是需要通过宿主机在 Docker 网桥中的 IP 地址(通常是172.17.0.1)来访问。
解决方法:使用 Host 网络模式
当你使用
--network host 启动 cloudflared 时,容器与宿主机共享网络命名空间,意味着:- 容器内的
localhost就等同于宿主机的localhost。
- 这样一来,
cloudflared能够直接访问宿主机上运行的 WebUI 服务,因为它们共享相同的网络环境。
因此,在配置过程中第 3 步的命令中,需要进行如下调整:
- 添加
d参数使容器在后台运行。
- 添加
network host参数使容器与宿主机共享网络命名空间。