安装docker环境
登录root账户,查看内核版本
[viktor@viktor ~]$ uname -a
Linux viktor 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
把yum更新到最新
[root@viktor viktor]# yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.usc.edu
* epel: mirrors.sonic.net
* extras: mirrors.oit.uci.edu
* updates: repos.lax.quadranet.com
No packages marked for update
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
[root@viktor viktor]# yum install -y yum-utils device-mapper-persistent-data lvm2
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* epel: mirrors.sonic.net
* extras: mirrors.oit.uci.edu
* updates: mirror.scalabledns.com
....
设置yum源
[root@viktor viktor]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
可以查看所有仓库中所有docker版本,并选择特定版本安装
[root@viktor viktor]# yum list docker-ce --showduplicates | sort -r
* updates: mirror.scalabledns.com
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
* extras: mirrors.oit.uci.edu
* epel: mirrors.sonic.net
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
* base: mirror.scalabledns.com
Available Packages
安装Docker,命令:yum install docker-ce-版本号,我选的是17.12.1.ce,如下
[root@viktor viktor]# yum install docker-ce-17.12.1.ce
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* epel: mirrors.sonic.net
* extras: mirrors.oit.uci.edu
* updates: mirror.scalabledns.com
...
启动Docker,命令:systemctl start docker,然后加入开机启动,如下
[root@viktor viktor]# systemctl start docker
[root@viktor viktor]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
验证安装是否成功(有client和service两部分表示docker安装启动都成功了) ```shell [root@viktor viktor]# docker version Client: Version: 17.12.1-ce API version: 1.35 Go version: go1.9.4 Git commit: 7390fc6 Built: Tue Feb 27 22:15:20 2018 OS/Arch: linux/amd64
Server: Engine: Version: 17.12.1-ce API version: 1.35 (minimum version 1.12) Go version: go1.9.4 Git commit: 7390fc6 Built: Tue Feb 27 22:17:54 2018 OS/Arch: linux/amd64 Experimental: false
- docker常用命令
```shell
# 查看当前正在运行的容器
docker ps
# 查看所有容器的状态
docker ps -a
# 启动/停止某个容器
docker start/stop id/name
# 进入某个容器(使用exit退出后容器也跟着停止运行)
docker attach id
# 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
docker exec -ti id
# 查看本地镜像
docker images
# 删除某个容器
docker rm id/name
# 删除某个镜像
docker rmi id/name
# 复制ubuntu容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash
docker run --name test -ti ubuntu /bin/bash
# 通过当前目录下的Dockerfile创建一个名为soar/centos:7.1的镜像
docker build -t soar/centos:7.1 .
# 以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变
docker run -d -p 2222:22 --name test soar/centos:7.1
安装Docker-Compose
下载Docker-Compose:
sudo curl -L https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
安装Docker-Compose:
sudo chmod +x /usr/local/bin/docker-compose
查看版本 :
docker-compose version
flink环境准备
本文教程是基于 Docker 进行的,因此你只需要安装了 Docker 即可。不需要依赖 Java、Scala 环境、或是IDE。
注意:Docker 默认配置的资源可能不太够,会导致运行 Flink Job 时卡死。因此推荐配置 Docker 资源到 3-4 GB,3-4 CPUs。
本次教程的环境使用 Docker Compose 来安装,包含了所需的各种服务的容器,包括:
- Flink SQL Client:用来提交query,以及可视化结果
- Flink JobManager 和 TaskManager:用来运行 Flink SQL 任务。
- Apache Kafka:用来生成输入流和写入结果流。
- Apache Zookeeper:Kafka 的依赖项
- ElasticSearch:用来写入结果
以下是Docker Compose 配置文件:
version: '2'
services:
sql-client:
image: fhueske/flink-sql-client-training-1.7.2:latest
depends_on:
- kafka
- jobmanager
- elasticsearch
environment:
FLINK_JOBMANAGER_HOST: jobmanager
ZOOKEEPER_CONNECT: zookeeper
KAFKA_BOOTSTRAP: kafka
ES_HOST: elasticsearch
jobmanager:
image: flink:1.7.2-scala_2.12
hostname: "jobmanager"
expose:
- "6123"
ports:
- "8081:8081"
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
taskmanager:
image: flink:1.7.2-scala_2.12
expose:
- "6121"
- "6122"
depends_on:
- jobmanager
command: taskmanager
links:
- jobmanager:jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:0.11.0.1
ports:
- "9092"
depends_on:
- zookeeper
environment:
HOSTNAME_COMMAND: "route -n | awk '/UG[ \t]/{print $$2}'"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.3.1
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
ports:
- "9200:9200"
- "9300:9300"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
然后打开命令行窗口,进入存放 docker-compose.yml
文件的目录,然后运行以下命令:
[root@viktor docker]# docker-compose up -d
Creating network "docker_default" with the default driver
Pulling jobmanager (flink:1.7.2-scala_2.12)...
1.7.2-scala_2.12: Pulling from library/flink
9cc2ad81d40d: Pull complete
e6cb98e32a52: Pull complete
ae1b8d879bad: Pull complete
2383fa4462e7: Pull complete
7ac3ce9f2067: Pull complete
ce9a16d8ddcb: Pull complete
d0078391b205: Pull complete
cb7d61aa945e: Pull complete
5dcb8e0f7236: Pull complete
f3f880699fcf: Pull complete
ffa37d915f80: Pull complete
0b51594f6132: Pull complete
Pulling taskmanager (flink:1.7.2-scala_2.12)...
1.7.2-scala_2.12: Pulling from library/flink
...
运行flink SQL Client
运行下面命令进入 Flink SQL CLI 。docker-compose exec sql-client ./sql-client.sh
该命令会在容器中启动 Flink SQL CLI 客户端。然后你会看到如下的欢迎界面。
您可以通过键入quit
或离开SQL CLI客户端exit
。
关闭训练环境。docker-compose down
注意:如果训练环境无响应,请重新启动Docker引擎,并为Docker提供更多资源。
我们在使用3-4 GB内存和3-4个CPU内核运行Docker方面取得了很好的经验。