马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
问题描述
在使用 Docker 项目部署容器时,系统会通过 ports 字段自动识别容器访问端口,并在容器的【快捷访问】中显示服务入口。但当容器使用 network_mode: host 模式时,系统默认无法识别快捷访问。 本教程将介绍如何在 host 模式下正确配置 ports 字段,使项目的容器支持快捷访问显示。
原因分析
在默认的 bridge 网络模式中,ports 字段用于端口映射,系统依赖此字段识别快捷访问入口。但在 host 模式下,端口映射实际无效,因此需要添加 ports 字段,让系统识别端口。 例如在以下 docker-compose 配置中,Jellyfin 使用了 network_mode: host,但没有 ports 字段,系统无法为其生成快捷访问入口。 - services:
- jellyfin:
- image: jellyfin/jellyfin:latest
- container_name: jellyfin
- tty: true
- restart: always
- devices:
- - /dev/dri:/dev/dri
- volumes:
- - ./config:/config
- - ./cache:/cache
- network_mode: host
复制代码 解决方案
1. 在 host 模式下,我们可以在项目的 compose 配置中添加 ports 字段来让系统识别服务端口。 - services:
- jellyfin:
- image: jellyfin/jellyfin:latest
- container_name: jellyfin
- tty: true
- restart: always
- devices:
- - /dev/dri:/dev/dri
- volumes:
- - ./config:/config
- - ./cache:/cache
- network_mode: host
- ports:
- - "8096:8096" # 端口供系统识别快捷访问入口
复制代码 2. 添加后重新部署项目后,在项目的容器中可以识别快捷访问入口。
注意事项
● 如果你不确定容器的访问端口,请前往该容器镜像的官方文档或教程页面中查看端口信息。 ● 使用 端口:端口 格式:必须写成 "8096:8096",与实际访问端口一致。 ● 禁止写成 8888:8096:系统无法正确识别,会导致无法访问。 ● host 模式下不会真正执行端口映射,仅用于“快捷访问”入口识别。 ● 仅使用项目(Compose)方式创建的容器,host 网络模式下才支持识别快捷访问入口;通过 Docker 容器面板直接创建的 host 模式容器不支持该功能。 |