flink-2-用docker命令安装Flink

(1)创建网络
#docker network create app-tier
创建网络是为了让容器能通过容器名或者容器ID发现对方,与对方进行通信。
(2)创建jobmanager容器
#docker run -t -d --name jmr
–network app-tier
-e JOB_MANAGER_RPC_ADDRESS=jmr
-p 8081:8081
flink:latest jobmanager

(3)创建taskmanager容器
#docker run -t -d --name tmr
–network app-tier
-e JOB_MANAGER_RPC_ADDRESS=jmr
flink:latest taskmanager

(4)要指定环境变量JOB_MANAGER_RPC_ADDRESS
不指定环境变量的话,jobmanager(即jmr)不会报错,但是taskmanager(即tmr)会报错。出现这个错误的原因是docker启动flink容器的时候,会执行镜像中官方定制的docker-entrypoint.sh脚本文件。
在这个脚本文件中指定了,如果启动命令中没有指定环境变量JOB_MANAGER_RPC_ADDRESS,那么就会使用本机的hostname作为这个环境变量的值,并将其写入到配置文件中。
所以,如果我们没有指定这个环境变量的值,那么taskmanager就会向自身的6123端口发起注册,这是错误的,因为taskmanger没有接受注册的能力,并且taskmanger应该是向jobmanger注册才对。因此我们需要指定JOB_MANAGER_RPC_ADDRESS的值为jobmanger的容器名或者容器ID或者容器的IP。
(5)可以使用docker命令增加容器,修改下容器名字即可
#docker run -t -d --name tmr1
–network app-tier
-e JOB_MANAGER_RPC_ADDRESS=jmr
flink:latest taskmanager
(6)浏览器打开 http://IP:8081 可以看到dashboard
flink-2-用docker命令安装Flink