Flink Docker 部署是否会有 Web UI(8081 端口)?
默认情况下,Flink 的 Standalone 集群(包括 Docker 部署)会启动 Web UI ,默认端口是 8081
。但你的命令使用的是 standalone-job
模式(Application Mode),它的行为有所不同:
1. standalone-job
(Application Mode)是否提供 Web UI?
-
❌ 默认情况下不会暴露 Web UI ,因为
standalone-job
是一个 一次性执行的 Job ,任务完成后容器会退出(尤其是加了--rm
参数时)。 -
如果想启用 Web UI,需要:
-
使用
jobmanager
角色(而非standalone-job
),这样 Flink 会以常驻服务运行。 -
显式映射
8081
端口 (通过-p 8081:8081
)。
-
2. 如何修改命令以启用 Web UI?
方法 1:改用 jobmanager
+ taskmanager
模式(推荐)
bash
# 启动 JobManager(带 Web UI)
docker run -d \ # -d 表示后台运行
--mount type=bind,src=/home/xxx/projects/paimon-flink/target/paimon-flink-1.0-SNAPSHOT.jar,target=/opt/flink/usrlib/paimon-flink.jar \
--name=jobmanager \
--network flink-network \
-p 8081:8081 \ # 映射 Web UI 端口
-e FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
flink:1.20.1-java11 jobmanager # 注意这里是 jobmanager,不是 standalone-job
# 启动 TaskManager
docker run -d \
--mount type=bind,src=/home/xxx/projects/paimon-flink/target/paimon-flink-1.0-SNAPSHOT.jar,target=/opt/flink/usrlib/paimon-flink.jar \
--network flink-network \
-e FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
flink:1.20.1-java11 taskmanager
# 提交 Job(通过 Web UI 或命令行)
docker exec jobmanager bash -c "
/opt/flink/bin/flink run \
-d \ # 后台运行
-c com.dev.flink_nc_demo1 \
/opt/flink/usrlib/paimon-flink.jar
"
访问 Web UI :
浏览器打开 http://localhost:8081
,即可看到 Flink Dashboard。
方法 2:临时调试(保留 standalone-job
但延长生命周期)
如果仍想用 standalone-job
,可以通过以下方式临时查看 Web UI:
bash
docker run \
--mount type=bind,src=/home/xxx/projects/paimon-flink/target/paimon-flink-1.0-SNAPSHOT.jar,target=/opt/flink/usrlib/paimon-flink.jar \
--name=jobmanager \
--network flink-network \
-p 8081:8081 \ # 映射端口
-e FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager; rest.port: 8081" \ # 显式指定 REST 端口
flink:1.20.1-java11 standalone-job \
--job-classname com.dev.flink_nc_demo1
注意:
-
Web UI 仅在 Job 运行期间短暂可用(任务结束后容器退出)。
-
不适合生产环境,仅建议调试使用。
3. 关键配置说明
配置项 | 作用 | 示例 |
---|---|---|
jobmanager 角色 |
启动常驻服务,提供 Web UI | flink:1.20.1-java11 jobmanager |
-p 8081:8081 |
将容器端口映射到主机 | 访问 http://localhost:8081 |
rest.port |
指定 REST 端口(可选) | -e FLINK_PROPERTIES="rest.port: 8081" |
4. 验证 Web UI 是否工作
-
检查容器是否运行:
bashdocker ps
应看到
jobmanager
和taskmanager
容器处于Up
状态。 -
访问
http://localhost:8081
,如果看到 Flink Dashboard 表示成功。 -
如果无法访问:
-
检查防火墙/安全组是否放行
8081
端口。 -
查看 JobManager 日志:
bashdocker logs jobmanager
确认是否有
Web frontend listening at http://0.0.0.0:8081
日志。
-
总结
-
standalone-job
模式:无持久化 Web UI,适合一次性任务。 -
jobmanager
模式:提供 Web UI,适合长期运行的集群。 -
生产建议 :使用方法 1(
jobmanager
+taskmanager
),并通过-p 8081:8081
暴露端口。