1. 安装docker

详情请参见本人博客

2. 编译doris

详情请参见doris官网文档

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

3. 在编译好的doris output文件夹下编写两个Dockerfile

3.1  Dockerfile_fe

FROM centos:centos7.5.1804

RUN mkdir /home/palo/run/ -p

# copy jdk and palo binary
COPY jdk1.8.0_131/ /home/palo/run/jdk1.8.0_131/
COPY fe/ /home/palo/run/fe/

# set java home
ENV JAVA_HOME /home/palo/run/jdk1.8.0_131/

# set fe port: http/thrift/mysql/bdbje
EXPOSE 8030 9020 9030 9010

# fe log and meta-data
# VOLUME ["/home/palo/run/fe/conf" i"/home/palo/run/fe/log" "/home/palo/run/fe/palo-meta"]

WORKDIR /home/palo/run/fe/

CMD "bin/start_fe.sh"

3.2 Dockerfile_be

FROM centos:centos7.5.1804

RUN mkdir /home/palo/run/ -p

# copy be
COPY be/ /home/palo/run/be/

# set be port: thrift/rpc/http/heartbeat
EXPOSE 9060 9070 8040 9050

# fe log and meta-data
VOLUME ["/home/palo/run/be/conf", "/home/palo/run/be/log", "/home/palo/run/be/data/"]

WORKDIR /home/palo/run/be/

CMD "bin/start_be.sh"

 

4. 制作docker镜像

4.1 下载jdk1.8.0_131.tar.gz到 output文件夹下并解压,具体可以到oracle官网下载

文件准备完成后的目录结构为

[druid@doris output]$ ls -l
total 8
drwxr-xr-x 5 druid druid  40 Apr 11 11:34 apache_hdfs_broker
drwxr-xr-x 5 druid druid  40 Apr 11 11:21 be
-rw-rw-r-- 1 druid druid 326 Apr 11 13:16 Dockerfile_be
-rw-rw-r-- 1 druid druid 454 Apr 11 13:16 Dockerfile_fe
drwxr-xr-x 6 druid druid  55 Apr 11 11:21 fe
drwxr-xr-x 8 druid druid 255 Mar 15  2017 jdk1.8.0_131

 

4.2 制作fe镜像

[druid@palo output]$ sudo docker build -t lenmom/doris:fe-0.9.0 -f Dockerfile_fe .
[sudo] password for druid: 
Sending build context to Docker daemon  2.027GB
Step 1/8 : FROM centos:centos7.5.1804
 ---> cf49811e3cdb
Step 2/8 : RUN mkdir /home/palo/run/ -p
 ---> Using cache
 ---> ffe6e7a05650
Step 3/8 : COPY jdk1.8.0_131/ /home/palo/run/jdk1.8.0_131/
 ---> a0b9c437e9f7
Step 4/8 : COPY fe/ /home/palo/run/fe/
 ---> a7706aa9939b
Step 5/8 : ENV JAVA_HOME /home/palo/run/jdk1.8.0_131/
 ---> Running in bd436cb488d5
Removing intermediate container bd436cb488d5
 ---> 9e10bc76f4b5
Step 6/8 : EXPOSE 8030 9020 9030 9010
 ---> Running in de0d71ee1f27
Removing intermediate container de0d71ee1f27
 ---> 16600856447f
Step 7/8 : WORKDIR /home/palo/run/fe/
 ---> Running in 2cfe3e4bc04e
Removing intermediate container 2cfe3e4bc04e
 ---> fc999dfbc914
Step 8/8 : CMD "bin/start_fe.sh"
 ---> Running in fafb6d98095d
Removing intermediate container fafb6d98095d
 ---> 62efbd2bbea0
Successfully built 62efbd2bbea0
Successfully tagged doris:fe-0.9.0

 doris 0.9.0版本docker镜像制作与使用 随笔 第1张

 

4.3 制作be镜像

[druid@palo output]$ sudo docker build -t lenmom/doris:be-0.9.0 -f Dockerfile_be .
Sending build context to Docker daemon  1.163GB
Step 1/7 : FROM centos:centos7.5.1804
 ---> cf49811e3cdb
Step 2/7 : RUN mkdir /home/palo/run/ -p
 ---> Running in 2ae7543e4f3a
Removing intermediate container 2ae7543e4f3a
 ---> 635d3dd01e5b
Step 3/7 : COPY be/ /home/palo/run/be/
 ---> 825e46597c07
Step 4/7 : EXPOSE 9060 9070 8040 9050
 ---> Running in 21e7742b6da5
Removing intermediate container 21e7742b6da5
 ---> c735c437a771
Step 5/7 : VOLUME ["/home/palo/run/be/conf", "/home/palo/run/be/log", "/home/palo/run/be/data/"]
 ---> Running in 456c4f54c79a
Removing intermediate container 456c4f54c79a
 ---> 392386745a0a
Step 6/7 : WORKDIR /home/palo/run/be/
 ---> Running in eac0b97ffdba
Removing intermediate container eac0b97ffdba
 ---> a488181610ba
Step 7/7 : CMD "bin/start_be.sh"
 ---> Running in 871bee0625c6
Removing intermediate container 871bee0625c6
 ---> cf8f3297619a
Successfully built cf8f3297619a
Successfully tagged lenmom/doris:be-0.9.0

doris 0.9.0版本docker镜像制作与使用 随笔 第2张

 4.4 查看镜像信息

[druid@palo output]$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lenmom/doris        fe-0.9.0            ecd903182693        2 minutes ago       649MB
lenmom/doris        be-0.9.0            cf8f3297619a        6 minutes ago       855MB
centos              centos7.5.1804      cf49811e3cdb        3 weeks ago         200MB

doris 0.9.0版本docker镜像制作与使用 随笔 第3张

 

5. 导出镜像与上传镜像

5.1 导出镜像到本地

#命令格式:
#docker save -o 要保存的文件名  要保存的镜像
sudo docker save -o doris-fe-0.9.0-docker.img  lenmom/doris:fe-0.9.0   #导出fe镜像到本地,默认导出到当前目录,可以指定完整参数
sudo docker save -o doris-be-0.9.0-docker.img  lenmom/doris:be-0.9.0   #导出be镜像到本地,默认导出到当前目录,可以指定完整参数

导出后的结果看下图:

doris 0.9.0版本docker镜像制作与使用 随笔 第4张

 

 5.2 导入镜像

使用5.1中导出的镜像,可以在其他机器的部署环境中,使用load命令导入镜像,直接使用即可

#命令格式:
sudo docker load --input 文件
#或者
sudo docker load < 文件名

针对本例中的两个镜像文件,操作命令为:

sudo docker load --input  doris-be-0.9.0-docker.img #导入be镜像
sudo docker load --input  doris-fe-0.9.0-docker.img #导入fe镜像

5.3 上传镜像

 命令格式为:   docker push NAME[:TAG]

注意:如果为个人注册的docker hub账号,一定要在镜像名称前面加上自己的docker hub用户名,否则提交上传会失败,出现类似下面的错误

Error response from daemon: pull access denied for xxx, repository does not exist or may require 'docker login'

上传镜像前,需要使用自己的docker hub账号登陆,然后才可以上传镜像文件,下面来操作一个波次看看

5.1 登陆docker hub

输入sudo docker login,然后输入用户名,密码即可。

[druid@palo output]$ sudo docker login 
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: {YOUR-DOCKER-HUB-ID}
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

doris 0.9.0版本docker镜像制作与使用 随笔 第5张

 

5.2 不带用户名的镜像上传会失败

修改lenmom/doris:be-0.9.0镜像名称为doris:be-0.9.0,即去掉签名的用户id,修改之前的镜像列表为

doris 0.9.0版本docker镜像制作与使用 随笔 第6张

$sudo docker tag lenmom/doris:be-0.9.0 doris:be-0.9.0    #创建不带用户id的镜像别名
$sudo docker rmi lenmom/doris:be-0.9.0                   #删除带用户id的镜像
Untagged: lenmom/doris:be-0.9.0
$sudo docker images                                      #查看镜像列表,带用户id的be镜像应该消失了
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lenmom/doris        fe-0.9.0            ecd903182693        41 minutes ago      649MB
doris               be-0.9.0            cf8f3297619a        About an hour ago   855MB
centos              centos7.5.1804      cf49811e3cdb        3 weeks ago         200MB

doris 0.9.0版本docker镜像制作与使用 随笔 第7张

现在上传该镜像,上传应该会失败

$sudo docker push  doris:be-0.9.0
Error response from daemon: pull access denied for doris, repository does not exist or may require 'docker login'

失败的原因是定位仓库的时候发现没有doris仓库,如果镜像带有用户id,那么默认的仓库是/id/tagname。

5.3 上传带用户id的镜像

[druid@palo194 output]$ sudo docker tag doris:be-0.9.0 lenmom/doris:0.9.0  #添加带用户id的镜像名称
[sudo] password for druid: 
[druid@palo194 output]$ sudo docker rmi doris:be-0.9.0                     #删除不带用户id的镜像名称
Untagged: doris:be-0.9.0
[druid@palo194 output]$ sudo docker images                                 #查看镜像列表
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lenmom/doris        fe-0.9.0            ecd903182693        About an hour ago   649MB
lenmom/doris        be-0.9.0               cf8f3297619a        About an hour ago   855MB
centos              centos7.5.1804      cf49811e3cdb        3 weeks ago         200MB
[druid@palo194 output]$ sudo docker push lenmom/doris:be-0.9.0             #上传带用户id的镜像,上传成功
The push refers to repository [docker.io/lenmom/doris]
270d8b1169bb: Preparing 
1d301fa1efc4: Preparing 
4826cdadf1ef: Preparing 

能够上传成功关键在docker.io/lenmom/doris,docker就是靠用户id来定位仓库地址的!!

 

6. 通过docker来使用制作好的镜像

6.1 启动fe容器

docker run --net=host -p 9030:9030 -p 8030:8030 -p 9010:9010 -p 9020:9020 \
-v /your/workspace/fe/log:/home/palo/run/fe/log \
-v /your/workspace/fe/palo-meta:/home/palo/run/fe/palo-meta \
-v /your/workspace/fe/conf:/home/palo/run/fe/conf/ -i -t -d \
-v /etc/localtime:/etc/localtime:ro lenmom/doris:fe-0.9.0

6.2 启动be容器

docker run --net=host --privileged -p 9050:9050 -p 8040:8040 -p 9060:9060 -p 9070:9070 \
-v /your/workspace/be/log:/home/palo/run/be/log \
-v /your/workspace/be/data:/home/palo/run/be/data \
-v /your/workspace/be/conf:/home/palo/run/be/conf/ \
-i -t -d -v /etc/localtime:/etc/localtime:ro lenmom/doris:be-0.9.0

 

Have fun with doris!

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄