参考官方文档:构建 Docker Image - Apache Doris部署,中间遇到了一些问题,记录一下详细的步骤。

Doris版本:1.1.5

1. 构建FE镜像

创建环境目录如下:

└── docker-build                                                // 构建根目录 
    └── fe                                                      // FE 构建目录
        ├── dockerfile                                          // dockerfile 脚本
        └── resource                                            // 资源目录
            ├── init_fe.sh                                      // 启动及注册脚本
            └── apache-doris-x.x.x-bin-fe.tar.gz                // 二进制程序包

1. 下载官方二进制包至docker-build/fe/resource目录下

2. 在docker-build/fe/resource目录下创建init_fe.sh脚本,可复制init_fe.sh

3.  在docker-build/fe目录下创建Dockerfile文件

# 选择基础镜像
FROM openjdk:8u342-jdk

# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/" \
    PATH="/opt/apache-doris/fe/bin:$PATH"

# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-fe-1.1.5-bin.tar.gz /opt/

RUN apt-get update && \
    apt-get install -y default-mysql-client && \
    apt-get clean && \
    mkdir /opt/apache-doris && \
    cd /opt && \
    mv apache-doris-fe-1.1.5-bin /opt/apache-doris/fe

ADD ./resource/init_fe.sh /opt/apache-doris/fe/bin
RUN chmod 755 /opt/apache-doris/fe/bin/init_fe.sh

ENTRYPOINT ["/opt/apache-doris/fe/bin/init_fe.sh"]

4. 执行构建

docker build . -t apache-doris:1.1.5-fe

2. 构建BE镜像   

创建环境目录如下:

└── docker-build                                                // 构建根目录 
    └── be                                                      // BE 构建目录
        ├── dockerfile                                          // dockerfile 脚本
        └── resource                                            // 资源目录
            ├── init_be.sh                                      // 启动及注册脚本
            └── apache-doris-x.x.x-bin-x86_64/arm-be.tar.gz     // 二进制程序包

1. 下载官方二进制包至docker-build/be/resource目录下

2. 在docker-build/be/resource目录下创建init_be.sh脚本,可复制init_be.sh

        注意:要将开头的 “#!/bin/env bash” 改为 “#!/bin/bash”

3. 在docker-build/be目录下创建Dockerfile文件:

# 选择基础镜像
FROM openjdk:8u342-jdk

# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/" \
    PATH="/opt/apache-doris/be/bin:$PATH"

USER root

# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-be-1.1.5-bin-x86_64.tar.gz /opt/

RUN apt-get update && \
    apt-get install -y default-mysql-client && \
    apt-get clean && \
    mkdir /opt/apache-doris && \
    cd /opt && \
    mv apache-doris-be-1.1.5-bin-x86_64 /opt/apache-doris/be

ADD ./resource/init_be.sh /opt/apache-doris/be/bin
RUN chmod 755 /opt/apache-doris/be/bin/init_be.sh

ENTRYPOINT ["/opt/apache-doris/be/bin/init_be.sh"]

4. 执行构建

docker build . -t apache-doris:1.1.5-be

以上,fe和be的镜像构建完毕,可以通过docker images命令查看:

3. 部署doris集群

使用一个fe节点和三个be节点

3.1 部署fe节点

docker run -itd --name=fe --env FE_SERVERS="fe1:172.10.70.2:9010" --env FE_ID=1 -p 8030:8030 -p 9030:9030 -v D:\Doris\docker-build\data\fe\doris-meta:/opt/apache-doris/fe/doris-meta -v D:\Doris\docker-build\data\fe\conf:/opt/apache-doris/fe/conf -v D:\Doris\docker-build\data\fe\log:/opt/apache-doris/fe/log --network=doris-network --ip=172.10.70.2 apache-doris:1.1.5-fe

 注意将其中-v后的挂载目录换成你自己的

在浏览器中验证

3.2 部署be节点

 

docker run --privileged -itd --name=be1 --env FE_SERVERS="fe1:172.10.70.2:9010" --env BE_ADDR="172.10.70.3:9050" -p 8040:8040 -v D:\Doris\docker-build\data\be1\storage:/opt/apache-doris/be/storage -v D:\Doris\docker-build\data\be1\conf:/opt/apache-doris/be/conf -v D:\Doris\docker-build\data\be1\log:/opt/apache-doris/be/log --network=doris-network --ip=172.10.70.3 apache-doris:1.1.5-be

docker run --privileged -itd --name=be2 --env FE_SERVERS="fe1:172.10.70.2:9010" --env BE_ADDR="172.10.70.4:9050" -p 8041:8040 -v D:\Doris\docker-build\data\be2\storage:/opt/apache-doris/be/storage -v D:\Doris\docker-build\data\be2\conf:/opt/apache-doris/be/conf -v D:\Doris\docker-build\data\be2\log:/opt/apache-doris/be/log --network=doris-network --ip=172.10.70.4 apache-doris:1.1.5-be

docker run --privileged -itd --name=be3 --env FE_SERVERS="fe1:172.10.70.2:9010" --env BE_ADDR="172.10.70.5:9050" -p 8042:8040 -v D:\Doris\docker-build\data\be3\storage:/opt/apache-doris/be/storage -v D:\Doris\docker-build\data\be3\conf:/opt/apache-doris/be/conf -v D:\Doris\docker-build\data\be3\log:/opt/apache-doris/be/log --network=doris-network --ip=172.10.70.5 apache-doris:1.1.5-be

同样需要将挂载目录换成你自己的。

接下来分别进入每个be容器并启动

cd /opt/apache-doris/be/bin
start_be.sh --daemon

3.3 在fe中添加be节点

进入fe容器

登录mysql

mysql -h 127.0.0.1 -P9030 -uroot

添加be节点

ALTER SYSTEM ADD BACKEND "172.10.70.3:9050";
ALTER SYSTEM ADD BACKEND "172.10.70.4:9050";
ALTER SYSTEM ADD BACKEND "172.10.70.5:9050";

在浏览器的ui中验证

 可以看到三个be节点均已被添加,且Alive为true。

--------------------------------------------------------------------------------------------------------------

踩过的坑

1. 启动be容器时报错:exec /opt/apache-doris/be/bin/init_be.sh: no such file or directory

        直接从官网复制来的init_be.sh的第一行“#!/bin/env bash”需要改成“#!/bin/bash”

2. 修改上面那个问题后又报错:sysctl: permission denied on key "vm.max_map_count"

        因为在init_be.sh中有一行 sysctl -w vm.max_map_count=2000000, 需要管理员权限,而docker创建容器时默认是没有管理员权限的,因此在docker run时要加上 --privileged

Logo

大数据从业者之家,一起探索大数据的无限可能!

更多推荐