Senate

端口

将 TCP/UDP 服务直接暴露到主机

端口

将容器端口直接暴露到主机,用于数据库、游戏服务器等非 HTTP 应用。

何时使用端口

场景解决方案
Web 应用、API(HTTP/HTTPS)使用 域名 标签页
数据库(PostgreSQL、MySQL、Redis)使用 端口
游戏服务器、MQTT、自定义协议使用 端口

HTTP/HTTPS 流量请在 域名 标签页配置。Senate 会自动处理 SSL 证书和反向代理。

添加端口映射

  1. 进入服务详情,选择 端口 标签页
  2. 点击 添加端口
  3. 配置端口映射:

端口标签页界面

字段说明示例
协议tcpudptcp
主机端口主机上的端口6379
容器端口容器内的端口6379
  1. 点击 保存
  2. 重新部署 服务以应用更改

端口更改需要重新部署才能生效,服务将在部署期间重启。

工作原理

┌─────────────────────────────────────────────────────┐
│                      主机                            │
│                                                     │
│   外部流量                                            │
│      │                                              │
│      ▼                                              │
│   ┌─────────┐      ┌──────────────────────────┐     │
│   │ :6379   │ ───▶ │  容器                     │     │
│   │ (主机)   │      │  ┌──────────────────┐    │     │
│   └─────────┘      │  │ Redis :6379      │    │     │
│                    │  └──────────────────┘    │     │
│                    └──────────────────────────┘     │
└─────────────────────────────────────────────────────┘

配置 主机端口: 6379容器端口: 6379 后:

  • 外部客户端连接 服务器IP:6379
  • Docker 将流量转发到容器的 6379 端口

常见配置

相同端口(直接映射)

大多数服务内外端口一致:

服务主机端口容器端口协议
Redis63796379tcp
PostgreSQL54325432tcp
MySQL33063306tcp
MongoDB2701727017tcp

不同端口(端口重映射)

运行多个实例或避免冲突:

服务主机端口容器端口协议
Redis (开发)63806379tcp
PostgreSQL (测试)54335432tcp

UDP 服务

游戏服务器和实时应用通常使用 UDP:

服务主机端口容器端口协议
Minecraft2556525565udp
DNS5353udp

安全注意事项

暴露的端口可从互联网访问。请务必配置身份验证并考虑防火墙规则。

最佳实践:

  • 为数据库设置强密码
  • 通过防火墙限制访问(如 ufw、安全组)
  • 敏感服务考虑使用 SSH 隧道而非公开暴露

Compose 服务

Docker Compose 服务的端口映射在 docker-compose.yml 中定义。端口标签页以 只读 模式显示配置的端口。

services:
  redis:
    image: redis:alpine
    ports:
      - "6379:6379"  # 主机端口:容器端口

目录