制作KES单机 镜像操作指导
------------------------------------------------------
家里测试环境:
192.168.2.129 root/kingbase 龙芯,麒麟v10
路径:/root/qsruan
192.168.2.125 root/kingbase 飞腾,麒麟v10
#root登录后,更改环境变量
export PATH=$PATH:/home/kingbase/docker
cd /home/kingbase/qsruan
-----------------------------------------------------
步骤一:准备材料说明
1、Dockerfile #docker编译
2、initKDB.sh #初始化数据库脚本,普通用户执行的
3、KingbaseES.tar.gz #KES的服务器包
4、kylin_v10_mips.tar #kylinv10的镜像包
5、rootKDB.sh #root用户执行的,主要完成两个步骤:修改data路径权限、切换普通用户初始化数据库
步骤二:导入系统镜像
docker load -i kylin_v10_mips.tar kylinv10:v1.0 Loaded image: kdbes:v1 |
步骤三:创建一个目录,把准备文件放进去
[root@2 docker]# pwd /root/docker [root@2 docker]# ls Dockerfile initKDB.sh KingbaseES.tar.gz rootKDB.sh |
步骤四:build镜像
docker build -t kdb_mips_kylinv10:v1 . |
镜像完成制作。
其他说明:
- 持久化时数据挂载目录为:/home/test/userdata/
- 默认的数据库端口为54321,根据情况做映射
镜像的使用
步骤一:导入系统镜像
docker load -i kdb_mips_kylinv10.tar kylinv10_with_kdb:v1.0 |
步骤二:启动容器
#直接启动 docker run -itd kylinv10_with_kdb:v1.0 /bin/bash #端口映射启动 docker run -P -itd kylinv10_with_kdb:v1.0 /bin/bash docker run -p 54321:54321 -itd kylinv10_with_kdb:v1.0 /bin/bash #外挂存储启动 docker run run -p 54321:54321 -v /home/test/data:/home/test/userdata -itd kylinv10_with_kdb:v1.0 /bin/bash |
步骤三:使用服务
(略)
相关文件说明
Dockerfile流程说明:
#cat Dockerfile FROM kylinv10:v1.0 MAINTAINER KDBDEV support@kingbase.com.cn USER root EXPOSE 54321 ENV PATH /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin COPY initKDB.sh /home/test/initKDB.sh COPY rootKDB.sh /root/rootKDB.sh COPY KingbaseES.tar.gz /home/test/KingbaseES.tar.gz WORKDIR /home/test/ RUN tar xvf KingbaseES.tar.gz RUN chown -R test:test KingbaseES RUN chown -R test:test initKDB.sh RUN rm -rf KingbaseES.tar.gz WORKDIR /root ENTRYPOINT ["bash","/root/rootKDB.sh"] |
RootKDB.sh
[root@2 ]# cat rootKDB.sh #!/bin/bash mkdir -p /home/test/userdata/ chown -R test:test /home/test/userdata/ su - test -c "/home/test/initKDB.sh" |
initKDB.sh
[root@2 qsruan]# cat initKDB.sh #!/bin/bash DB_PATH=/home/test/KingbaseES DATA_DIR=/home/test/userdata/data LOG_FILE=${DATA_DIR}/logfile check_is_init(){ declare -g DATABASE_ALREADY_EXISTS if [ -d "${DATA_DIR}" ];then DATABASE_ALREADY_EXISTS='true' fi } db_init(){ mkdir -p ${DATA_DIR} chown -R test:test ${DATA_DIR} ${DB_PATH}/bin/initdb -USYSTEM -W123456 -D${DATA_DIR} --case-insensitive } check_is_init if [ -z "${DATABASE_ALREADY_EXISTS}" ];then db_init fi ${DB_PATH}/bin/sys_ctl -D ${DATA_DIR} -l ${LOG_FILE} start sleep 10 tailf ${LOG_FILE} |