Doris 1.2.4.1 Dockerfile制作

参考文档:​​​​​​doris docker部署 1.2.4.1版本 (ngui.cc)

构建 Docker Image - Apache Doris

镜像编译

准备工作

1、创建目录

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

mkdir -p /opt/dockerfile/doris/docker-build/be/resource
mkdir -p /opt/dockerfile/doris/docker-build/fe/resource

cp ~/soft/apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz /opt/dockerfile/doris/docker-build/fe/resource

cp ~/soft/apache-doris-be-1.2.4.1-bin-x86_64.tar.xz /opt/dockerfile/doris/docker-build/be/resource

下载 init_fe.sh 

doris/docker/runtime/fe/resource/init_fe.sh

下载 init_be.sh 

doris/docker/runtime/be/resource/init_be.sh

#设置环境变量
FROM openjdk:8u342-jdk
# 下载软件至镜像内,可根据需要替换
ENV JAVA_HOME="/usr/local/openjdk-8/" \
    PATH="/opt/apache-doris/fe/bin:$PATH"
ADD ./resource/apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz /opt/

USER root

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.2.4.1-bin-x86_64 /opt/apache-doris/fe

ADD ./resource/init_fe.sh /opt/apache-doris/fe/bin 
COPY ./resource/fe.conf /opt/apache-doris/fe/conf

RUN chmod 755 /opt/apache-doris/fe/bin/init_fe.sh && \
    chmod 755 /opt/apache-doris/fe/bin/start_fe.sh && \
    chmod 755 /opt/apache-doris/fe/bin/stop_fe.sh

# ENTRYPOINT ["/opt/apache-doris/fe/bin/init_fe.sh"]
CMD ./opt/apache-doris/fe/bin/init_fe.sh && tail -f /dev/null
 

/opt/dockerfile/doris/docker-build/fe 目录下执行

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

docker tag apache-doris:1.2.4.1-fe 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-fe

docker push 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-fe

打包:

docker save -o apache-doris-1.2.4.1-fe.tar apache-doris:1.2.4.1-fe

load镜像:

docker load -i apache-doris-1.2.4.1-fe.tar

启动:

前期环境准备

需在宿主机执行如下命令

sysctl -w vm.max_map_count=2000000

修改后查看:

sysctl -a|grep vm.max_map_count

1 FE:

docker run -itd \
--name=fe \
--env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \
--env FE_ID=1 \
-p 8030:8030 \
-p 9030:9030 \
-v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta \
-v /data/fe/log:/opt/apache-doris/fe/log \
--net=host \
apache/doris:2.0.0_alpha-fe-x86_64

docker run -itd --name=fe --env FE_SERVERS="fe1:192.168.1.244:9010" --env FE_ID=1 -p 8030:8030 -p 9030:9030 -v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta -v /data/fe/log:/opt/apache-doris/fe/log --net=host apache-doris:1.2.4.1-fe

docker ps -a 发现没有启动成功

docker logs fe  查看容器日志

 docker rm fe  删除容器

docker rmi 4fa6fb409922 删除镜像

重新打包

发现是 SELinux 没有禁用

 6、禁用 SELinux

# 临时关闭
setenforce 0
# 永久禁用
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

1 BE:

FROM openjdk:8u342-jdk

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

# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-be-1.2.4.1-bin-x86_64.tar.xz /opt/
COPY ./resource/apache-doris-dependencies-1.2.4.1-bin-x86_64/java-udf-jar-with-dependencies.jar /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.2.4.1-bin-x86_64 /opt/apache-doris/be && \
    mv /opt/java-udf-jar-with-dependencies.jar /opt/apache-doris/be/lib

ADD ./resource/init_be.sh /opt/apache-doris/be/bin
COPY ./resource/be.conf /opt/apache-doris/be/conf

RUN chmod 755 /opt/apache-doris/be/bin/init_be.sh && \
    chmod 755 /opt/apache-doris/be/bin/start_be.sh && \
    chmod 755 /opt/apache-doris/be/bin/stop_be.sh

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

/opt/dockerfile/doris/docker-build/be 目录下执行

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

docker tag apache-doris:1.2.4.1-be 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-be
docker push 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-be

打包:

docker save -o apache-doris-1.2.4.1-be.tar apache-doris:1.2.4.1-be

load镜像:

docker load -i apache-doris-1.2.4.1-be.tar

docker run -itd \
--name=be \
--env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \
--env BE_ADDR="${当前机器的内网IP}:9050" \
-p 8040:8040 \
-v /data/be/storage:/opt/apache-doris/be/storage \
-v /data/be/log:/opt/apache-doris/be/log \
--net=host \
apache/doris:2.0.0_alpha-be-x86_64

docker run -itd --name=be --env FE_SERVERS="fe1:${当前机器的内网IP}:9010" --env BE_ADDR="${当前机器的内网IP}:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache/doris:2.0.0_alpha-be-x86_64

3台节点  需修改 BE_ADDR

docker run -itd --name=be --env FE_SERVERS="fe1:192.168.1.244:9010" --env BE_ADDR="192.168.1.244:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache-doris:1.2.4.1-be

docker run -itd --name=be --env FE_SERVERS="fe1:192.168.1.244:9010" --env BE_ADDR="192.168.1.243:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache-doris:1.2.4.1-be

docker run -itd --name=be --env FE_SERVERS="fe1:192.168.1.244:9010" --env BE_ADDR="192.168.1.249:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache-doris:1.2.4.1-be

登录容器

docker exec -it acb5a528184b bash

查看FE-Config:  cat /opt/apache-doris/be/conf/be.conf  

修改priority_networks参数,例如当前节点的 IP 地址为 10.10.2.21,则需要更改为 10.10.2.0/24 填入,这里需要填入的是 IP 子网网段地址,并非 IP 地址

sed -i 's/priority_networks = /priority_networks = 192.168.1.0\/24/g' /opt/apache-doris/be/conf/be.conf

更换为当前节点的IP子网网段地址

在容器内执行启动命令

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

查看日志:

tail -500f /opt/apache-doris/be/log/be.out

退出容器 exit

在Doris数据库中添加BE配置

mysql -uroot -P9030 -h192.168.1.244

ALTER SYSTEM ADD BACKEND "192.168.1.244:9050";

使用 mysql-client 连接到 FE,并执行show proc '/backends'\G; 查看 BE 运行情况。如一切正常,isAlive 列应为 true

猜你喜欢

转载自blog.csdn.net/wangqiaowq/article/details/132068076