标准答案
- 容器监听端口只代表容器网络命名空间内有服务,外部是否可达还取决于网络模式和端口发布。
- 端口发布通常将宿主机端口映射到容器地址,绑定到 0.0.0.0 还是回环地址会影响暴露范围。
- host 网络减少一层网络隔离和转发,但端口冲突、隔离减弱和平台差异需要单独评估。
- 排查要分别确认应用监听地址、容器网络、发布规则、宿主机防火墙和客户端访问地址。
题目解析
EXPOSE 记录镜像作者认为容器会监听的端口,主要用于文档和工具默认值,不会自动建立宿主机端口映射。运行时的 -p 或平台 Service 才决定外部如何到达容器;容器内监听地址仍决定是否接受来自其他网络命名空间的连接。
排查要分别确认应用监听端口和地址、容器 network namespace、发布规则、主机防火墙以及实际客户端路径。发布端口成功也不代表 TLS、HTTP、认证和业务健康已经通过。
常见误区
- 误区:只写 EXPOSE 就认为外部可访问。改正:配置并验证运行时端口发布、网络策略和主机防火墙。
- 误区:应用只监听 127.0.0.1 却期待容器外访问。改正:根据网络模型监听合适地址,并从实际客户端测试。