想学会更多实用技巧,欢联系小助手,迎加入青学会MOP技术社区(实名社区)。
同时欢迎大家在评论区留言互动交流!社区会不定期举行相关的抽奖、公开分享活动。
如果你有想了解的知识点希望我们发文可以后台私信。

随着容器化技术的发展,Docker已成为构建、发布及运行应用程序的标准方式之一。它通过提供一种轻量级且高效的虚拟化解决方案,使得开发人员能够在一致的环境中快速地部署应用。本文将指导您如何使用Docker来搭建Kingbase数据库环境。
安装部署docker:
实验环境:
操作系统:redhat7.6,CPU 2核,内存2G
关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
配置yum源(使用Vault镜像):对于已达到EOL的操作系统版本,Red Hat通常会将其存档在Vault中:
1.编辑/etc/yum.repos.d/CentOS-Base.repo
文件:
vi etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2.更新yum缓存:
[root@wykbase ~]# yum clean all
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Cleaning repos: base extras updates
[root@wykbase ~]# yum makecache
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/10): base/x86_64/group_gz | 153 kB 00:00:01
(2/10): base/x86_64/primary_db | 6.1 MB 00:00:24
(3/10): extras/x86_64/primary_db | 253 kB 00:00:00
(4/10): extras/x86_64/other_db | 154 kB 00:00:00
(5/10): extras/x86_64/filelists_db | 305 kB 00:00:01
(6/10): base/x86_64/filelists_db | 7.2 MB 00:00:28
(7/10): base/x86_64/other_db | 2.6 MB 00:00:09
(8/10): updates/x86_64/filelists_db | 15 MB 00:00:59
(9/10): updates/x86_64/other_db | 1.6 MB 00:00:06
(10/10): updates/x86_64/primary_db | 27 MB 00:01:49
Metadata Cache Created
安装与禁用iptables,安装出现错误:
[root@wykbase ~]# yum install iptables-services -y
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package iptables-services.x86_64 0:1.4.21-35.el7 will be installed
--> Processing Dependency: iptables = 1.4.21-35.el7 for package: iptables-services-1.4.21-35.el7.x86_64
--> Running transaction check
---> Package iptables.x86_64 0:1.4.21-28.el7 will be updated
---> Package iptables.x86_64 0:1.4.21-35.el7 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================================================================================================
Installing:
iptables-services x86_64 1.4.21-35.el7 base 52 k
Updating for dependencies:
iptables x86_64 1.4.21-35.el7 base 432 k
Transaction Summary
=================================================================================================================================================================================================================
Install 1 Package
Upgrade ( 1 Dependent package)
Total download size: 485 k
Downloading packages:
No Presto metadata available for base
warning: /var/cache/yum/x86_64/7Server/base/packages/iptables-services-1.4.21-35.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY ] 0.0 B/s | 0 B --:--:-- ETA
Public key for iptables-services-1.4.21-35.el7.x86_64.rpm is not installed
(1/2): iptables-services-1.4.21-35.el7.x86_64.rpm | 52 kB 00:00:00
(2/2): iptables-1.4.21-35.el7.x86_64.rpm | 432 kB 00:00:01
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 245 kB/s | 485 kB 00:00:01
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7"
报错处理方法:
首先,创建目录
sudo mkdir -p /etc/pki/rpm-gpg
然后,使用curl,下载GPG密钥并将其放置在正确的路径下:
[root@wykbase ~]# curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 https://www.centos.org/keys/RPM-GPG-KEY-CentOS-7
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1690 100 1690 0 0 1307 0 0:00:01 0:00:01 --:--:-- 1307
更新Yum缓存后,重新安装iptables:
[root@wykbase ~]# yum install iptables-services -y
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package iptables-services.x86_64 0:1.4.21-35.el7 will be installed
--> Processing Dependency: iptables = 1.4.21-35.el7 for package: iptables-services-1.4.21-35.el7.x86_64
--> Running transaction check
---> Package iptables.x86_64 0:1.4.21-28.el7 will be updated
---> Package iptables.x86_64 0:1.4.21-35.el7 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================================================================================================
Installing:
iptables-services x86_64 1.4.21-35.el7 base 52 k
Updating for dependencies:
iptables x86_64 1.4.21-35.el7 base 432 k
Transaction Summary
=================================================================================================================================================================================================================
Install 1 Package
Upgrade ( 1 Dependent package)
Total download size: 485 k
Downloading packages:
No Presto metadata available for base
warning: /var/cache/yum/x86_64/7Server/base/packages/iptables-services-1.4.21-35.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY ] 0.0 B/s | 0 B --:--:-- ETA
Public key for iptables-services-1.4.21-35.el7.x86_64.rpm is not installed
(1/2): iptables-services-1.4.21-35.el7.x86_64.rpm | 52 kB 00:00:01
(2/2): iptables-1.4.21-35.el7.x86_64.rpm | 432 kB 00:00:02
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 237 kB/s | 485 kB 00:00:02
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : iptables-1.4.21-35.el7.x86_64 1/3
Installing : iptables-services-1.4.21-35.el7.x86_64 2/3
Cleanup : iptables-1.4.21-28.el7.x86_64 3/3
Verifying : iptables-services-1.4.21-35.el7.x86_64 1/3
Verifying : iptables-1.4.21-35.el7.x86_64 2/3
Verifying : iptables-1.4.21-28.el7.x86_64 3/3
Installed:
iptables-services.x86_64 0:1.4.21-35.el7
Dependency Updated:
iptables.x86_64 0:1.4.21-35.el7
Complete!
禁用 iptables:
[root@wykbase ~]# service iptables stop && systemctl disable iptables
Redirecting to /bin/systemctl stop iptables.service
--清空防火墙规则
[root@wykbase ~]# iptables -F
接下来关闭selinux:
--此命令临时禁用
sudo setenforce 0
--使用命令
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
--校验是否关闭(需重启系统),状态为disabled表示关闭成功
getenforce
安装依赖软件包:
yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrac


依赖包安装完毕后,开始使用Yum安装docker:
[root@wykbase ~]# yum install docker

docker安装完毕后,使用docker --version命令进行校验:
[root@wykbase ~]# docker --version
准备工作与docker容器的安装已经完毕,接下来进入正式的环节,也就是在docker容器中部署安装金仓系统。
在docker中部署安装金仓系统:
进入金仓社区下载地址:https://www.kingbase.com.cn/xzzx/index.htm

下载完毕后,将文件上传拷贝至/opt目录中,修改文件名(可选)
[root@wykbase opt]# ll
total 718500
-rw-r--r--. 1 root root 735744000 Oct 6 22:57 kdb_x86_64_V009R001C001B0030.tar
drwxr-xr-x. 2 root root 6 Jun 18 2018 rh
[root@wykbase opt]# mv kdb_x86_64_V009R001C001B0030.tar kdb.tar
启动docker并导入镜像文件:
[root@wykbase opt]# systemctl start docker
[root@wykbase opt]# docker load -i kdb.tar
96723fcc60ed: Loading layer [==================================================>] 309.9 MB/309.9 MB
0b5ff42cb923: Loading layer [==================================================>] 22.53 kB/22.53 kB
0e4164e0b4de: Loading layer [==================================================>] 7.168 kB/7.168 kB
9992fad87280: Loading layer [==================================================>] 8.192 kB/8.192 kB
948689666f76: Loading layer [==================================================>] 8.704 kB/8.704 kB
2cf6ca41c8ba: Loading layer [==================================================>] 425.8 MB/425.8 MB
4b603a3ab443: Loading layer [==================================================>] 8.192 kB/8.192 kB
9c91b23f9b28: Loading layer [==================================================>] 5.632 kB/5.632 kB
afb78b4e1207: Loading layer [==================================================>] 3.072 kB/3.072 kB
f263200dae6c: Loading layer [==================================================>] 5.12 kB/5.12 kB
Loaded image: kingbase_v009r001c001b0030_single_x86:v1
运行镜像,下面出现长串字符,表示运行成功:
[root@wykbase opt]# docker run -tid --privileged \
-p 5432:54321 \
-v /data:/home/kingbase/userdata/ \
-e ENABLE_CI=yes \
-e NEED_START=yes \
-e DB_USER=kingbase \
-e DB_PASSWORD=123456 \
-e DB_MODE=oracle \
--name kingbase_wy \
kingbase_v009r001c001b0030_single_x86:v1 /usr/sbin/init
--735b4674a48f24598aa7d7b59dbfad6f50dc71fe048610285da573005deb6c06
选项说明:
-p 绑定宿主机端口
-v 可以将容器内数据目录(/home/kingbase/userdata/)挂载到宿主机进行持久化
DB_USER: 数据库用户
DB_PASSWORD: 数据库初始密码
DB_MODE: 数据库模式
NEED_START: 进入容器后是否启动数据库
ENABLE_CI: 是否需要配置大小写敏感
进入容器:
--查看
[root@wykbase opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
735b4674a48f kingbase_v009r001c001b0030_single_x86:v1 "/bin/bash /home/k..." 3 minutes ago Up 3 minutes 0.0.0.0:4321->54321/tcp kingbase_wy
[root@wykbase opt]# docker exec -it kingbase_wy /bin/bash
Welcome to 3.10.0-957.el7.x86_64
System information as of time: Sun 06 Oct 2024 03:07:18 PM UTC
System load: 0.00
Processes: 19
Memory used: 53.7%
Swap used: 0.5%
Usage On: 16%
Users online: 0
测试:
使用ksql登录数据库:
[kingbase@04791d050560 ~]$ ksql
Type "help" for help.
kingbase=# select version();
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V009R001C001B0030 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
容器外通过kstudio工具访问数据库:


通过以上步骤,我们已经顺利地在Docker环境中完成了Kingbase数据库的部署。这不仅为您的项目提供了一个快速启动、易于维护的数据存储解决方案,也为团队成员间共享一致的工作环境打下了坚实基础。希望这次实战经验分享能帮助您更高效地利用Docker容器技术的优势,在未来的开发工作中更加得心应手。
此外,如果您对kingbase数据库感兴趣,请继续关注我们的专栏。
往期文章回顾
MOP社区新闻
金仓专栏
告别繁琐!KingbaseES v9数据库一键安装-青学会&金仓专栏(1)
DBA实战小技巧
实战:记一次RAC故障排查
DBA实战运维小技巧安装篇(一)Oracle 主流版本不同架构下的静默安装指南
DBA实战运维小技巧存储篇(一)根目录满了如何处理
DBA实战运维小技巧存储篇(二)打包迁移单机数据库至新存储
MOP社区投稿-内核开发
简单解析 IvorySQL 增强 Oracle xml 兼容能力的原理
简单讨论 PostgreSQL C语言拓展函数返回数据表的方式
简单分析 pg_config 程序的作用与原理
Redis 日志机制简介(一):SlowLog
Redis 日志机制简介(二):AOF 日志
Redis 日志机制简介(三):RDB 日志
pg_cron插件使用介绍
Redis 的指令表实现机制简介
pg几款源码工具介绍
Redis 事务功能简介




