一、安裝部署
1,導入鏡像
#導入鏡像(root用戶)
[root@node docker ]# mv kdb_x86_64_V008R006C009B0014.tar kingbase.tar
[root@node docker]# docker load -i kingbase.tar#查看鏡像(root用戶)
[root@node docker]# docker images
2、運行鏡像
(1)設置環境變量
#(root用戶)
docker run -idt --privileged -p ${hostport}:${containerport} \
–v ${宿主機掛載目錄}:${容器掛載目錄} \
-e NEED_START=${need_start} \
-e DB_USER=${username} \
-e DB_PASSWORD=${passwd} \
-e DB_MODE=${dbmode} \
-e ENCODING=${encoding} \
--name kingbase kingbase:v1 \
/usr/sbin/init#數據庫默認用戶名:system 數據庫默認密碼:12345678ab 數據庫默認 data 目錄:/home/kingbase/userdata/data 金倉數據庫鏡像:kingbase:v1
#設置數據庫 data 目錄的持久化路徑時, 需要如下設置:
-v 選項冒號左側宿主機掛載目錄 (/mnt/data) 權限需要設置 755 的權限(chmod -R 755 /mnt/data), 不然會報權限(Permission denied) 錯誤。
-v 選項冒號右側為容器內的掛載路徑需要設置為/home/kingbase/userdata, 不然 data 目錄無法持久化。
(2)最小啟動命令
docker run -tid --privileged \
--name kingbase \
kingbase:v1 /usr/sbin/init#查看
docker ps
3.完整啟動命令
[root@node docker]# mkdir /mnt/data
[root@node docker]# chmod -R 755 /mnt/data/
[root@node docker]# mkdir /home/kingbase/userdata -p[root@node docker]# docker run -tid --privileged -p 4321:54321 -v /mnt/data:/home/kingbase/userdata/ -e NEED_START=yes -e DB_USER=kingbase -e DB_PASSWORD=123456 -e DB_MODE=oracle --name kingbase kingbase_v008r006c009b0014_single_x86:v1 /usr/sbin/init
4.數據庫自動運行
#啟動容器+交互式進入容器(root用戶)
[root@node docker]# docker exec -it kingbase /bin/bash
[kingbase@e2792704eadb ~]$ #查看狀態
[kingbase@e2792704eadb ~]$ sys_ctl -D /home/kingbase/userdata/data/ status
5.ksql訪問數據庫
#默認是kingbase用戶
[kingbase@e2792704eadb ~]$ ksql -Ukingbase -d test -p54321#注意:su - root 會導致環境變量丟失,PATH 中沒有 ksql(也無法 ksql 免密登錄), 推薦使用 su root
6.容器外訪問數據庫
#宿主機遠程訪問需要加-h 及改變映射端口。非root用戶(找一個客戶端去執行驗證)
[kingbase@node1 ~]$ /home/kingbase/Kingbase/ES/V8/Server/bin/ksql -Ukingbase -d test -p 4321 -h 192.168.40.32
7.license持久化以及更換
#容器啟動后對應的 license.dat 文件會復制到 etc 持久化目錄,并建立軟連接。kingbase用戶執行。
[kingbase@e2792704eadb ~]$ ls -l /home/kingbase/install/kingbase/bin/license.dat
[kingbase@e2792704eadb ~]$ ls -l /home/kingbase/install/kingbase/etc/
#更新容器掛載目錄/mnt/data/etc 目錄下的 license.dat 文件(容器內掛載目錄應為/home/kingbase/userdata/ 而不是/home/kingbase/userdata/data), 進入容器后,并輸入命令修改成正確權限。[kingbase@e2792704eadb ~]$ chown kingbase:kingbase /home/kingbase/userdata/etc/license.dat
[kingbase@e2792704eadb ~]$ chmod 755 /home/kingbase/userdata/etc/license.dat
8.數據庫啟停
#進入容器/home/kingbase/install/kingbase/bin 目錄(kingbase用戶)
[kingbase@e2792704eadb ~]$ /home/kingbase/install/kingbase/bin/sys_ctl -D /home/kingbase/userdata/data/ stop
[kingbase@e2792704eadb ~]$ /home/kingbase/install/kingbase/bin/sys_ctl -D /home/kingbase/userdata/data/ start
9.使用 docker logs 查看容器腳本執行日志
#root用戶
[root@node docker]# docker logs kingbase
3、選項介紹
為了防止報錯,可以先執行以下刪除不必要的干擾。
#先查看container id,然后刪除運行的容器
[root@node docker]# docker ps
CONTAINER ID [root@node docker]# docker rm -f id號
1.-p綁定端口
#(root用戶)
[root@ docker]# docker run -tid --privileged -p 4321:54321 -v /mnt/data:/home/kingbase/userdata/ --name kingbase kingbase_v008r006c009b0014_single_x86:v1 /usr/sbin/init將容器內部端口綁定到宿主機端口 4321 上,在宿主機內連接該數據庫宿主機可成功訪問對應數據庫
#找一個客戶端去連接(root用戶)
${安裝目錄}/bin/ksql -Usystem -d test -h 192.168.40.32 -p 4321
2.-v掛載目錄
#使用-v 可以將容器內數據目錄(/home/kingbase/userdata/)掛載到宿主機設置數據庫 data 目錄的持久化路徑時, 需要如下設置: -v 選項冒號左側宿主機掛載目錄 (/mnt/data) 權限需要設置 755 的權限(chmod -R 755 /mnt/data), 不然會報權限 (Permission denied) 錯誤。-v 選項冒號右側為容器內的掛載路徑需要設置為/home/kingbase/userdata, 不然 data 目錄無法持久化。[root@node docker]# docker run -tid --privileged -p 4321:54321 -v /mnt/data:/home/kingbase/userdata/ --name kingbase kingbase_v008r006c009b0014_single_x86:v1 /usr/sbin/init#查看掛載是否生效
[root@node docker]# docker inspect -f ‘{{.Mounts}}’ kingbase‘[{bind /mnt/data /home/kingbase/userdata true rprivate}]’#持久化數據掛載成功。進入容器。
[root@node docker]# docker exec -it kingbase /bin/bash
[kingbase@10c45ebe9024 ~]$
3.DB_USER: 數據庫用戶
[root@node docker]# docker run -tid --privileged -p 4321:54321 -v /mnt/data:/home/kingbase/userdata/ -e DB_USER=kingbase --name kingbase kingbase_v008r006c009b0014_single_x86:v1[root@node docker]# docker exec -it kingbase /bin/bash[kingbase@d6b7a7d50e2e ~]$ ksql -Ukingbase -d test
4.DB_PASSWORD: 數據庫初始密碼
[root@localhost docker]# docker run -tid --privileged -p 4321:54321 -v /mnt/data:/home/kingbase/userdata/ -e DB_USER=kingbase -e DB_PASSWORD=123 --name kingbase kingbase_v008r006c009b0014_single_x86:v1 /usr/sbin/init#找一個客戶端去訪問測試
${安裝目錄}/bin/ksql -Ukingbase -dtest -p4321 -h 192.168.40.32
5.DB_MODE: 數據庫模式
[kingbase@85ffc680f5d0 ~]$ cat /home/kingbase/userdata/data/initdb.conf |grep mode
--dbmode=oracle
6.NEED_START: 進入容器后是否啟動數據庫
默認是yes
7.ENCODING: 數據庫啟動的字符集
默認是UTF8
8.配置文件持久化及修改配置文件后生效
#啟動容器后, 一些配置文件會跟著 data 目錄一起持久化,包括 kingbase.conf等配置文件. 在持久化目錄中修改配置文件后,使用下面的命令來生效:
[kingbase@85ffc680f5d0 ~]$ /home/kingbase/install/kingbase/bin/sys_ctl reload -D /home/kingbase/userdata/data/
9.安裝正確性驗證
1.#查看容器狀態
[root@node ~]# docker ps 2.#看啟動日志
[root@node ~]# docker logs kingbase3.#進入容器查看進程
[root@node docker]# docker exec -it kingbase /bin/bash
[kingbase@85ffc680f5d0 ~]$ /home/kingbase/install/kingbase/bin/sys_ctl -D /home/kingbase/userdata/data/ status
sys_ctl: server is running (PID: 87)
10.卸載數據庫
1.#先停庫
[root@node docker]# docker stop kingbase2.#刪除容器
docker ps #查看
docker rm -f id #執行刪除3.#刪除鏡像
docker images
docker rmi (IMAGE ID)
4、注意事項
1.#當使用 docker load -i kingbase.tar 命令報錯時,可使用 docker import kingbase.tar 命令,嘗試重新導包。2.#創建容器的的時候,可以在“docker run“命令中加--restart=always,將重啟策略改為任何情況都重啟。3.#docker 版本大于 20.10.0