docker安装KES V9

docker安装KES V9

初识kingbase,第一步跟着官方文档指导安装一个数据库试试

安装前准备

下载介质

人大金仓-成为世界卓越的数据库产品与服务提供商 (kingbase.com.cn)

选择对应的 docker 镜像

image

选择对应的试用license,要体验肯定要选择功能最全的,这里我们选企业版

image

上传软件安装包到准备的服务器

md5验证下安装包文件

# md5sum kdb_x86_64_V008R006C008B0014.tar
4f373955e7e0632a33178ff7aba3d3a8  kdb_x86_64_V008R006C008B0014.tar

安装环境

官方文档上的硬件要求如下:

image

先给个4C8G,存储20G

操作系统cpu内存docker目录数据文件存放空间
RHEL8.748g/docker/kingbase/data

Docker安装

配置yum源
#yum remove -y docker*
#yum install -y yum-utils
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum makecache 
#yum list docker-ce  --showduplicates | sort -r
可安装的软件包
docker-ce.x86_64                3:26.1.3-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.1.2-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.1.1-1.el8                  docker-ce-stable
docker-ce.x86_64                3:26.1.0-1.el8                  docker-ce-stable
...(列出部分)
安装docker
#指定版本安装
#yum install -y docker-ce-cli-1:26.1.3-1.el8.x86_64  docker-ce-3:26.1.3-1.el8.x86_64 
...(安装过程省略)
已安装:
  container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch                containerd.io-1.6.32-3.1.el8.x86_64
  docker-buildx-plugin-0.14.0-1.el8.x86_64                                        docker-ce-3:26.1.3-1.el8.x86_64
  docker-ce-cli-1:26.1.3-1.el8.x86_64                                             docker-compose-plugin-2.27.0-1.el8.x86_64
  libcgroup-0.41-19.el8.x86_64


#指定docker的数据存储路径
#vim /etc/docker/daemon.json
#添加以下
{
  "data-root": "/docker"
}

#重新加载配置并重启docker服务
#sudo systemctl daemon-reload
#sudo systemctl restart docker
#sudo systemctl enable docker

#验证安装
#docker version
Client: Docker Engine - Community
 Version:           26.1.3
 API version:       1.45
 Go version:        go1.21.10
 Git commit:        b72abbb
 Built:             Thu May 16 08:34:39 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.1.3
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.10
  Git commit:       8e96db1
  Built:            Thu May 16 08:33:34 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.32
  GitCommit:        8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

预安装工作

安装用户
使用root用户安装,对于安装路径需要有读、写、执行权限

需要创建kingbase用户及属主

groupadd -g 1000 kingbase
useradd -u 1000 -g kingbase kingbase
echo "kes1234" | passwd -stdin kingbase
安装目录
使用docker安装,安装目录会在docker的存储目录/docker下
数据目录
存放kingbaseES数据文件的目录,默认放在容器的/home/kingbase/userdata/data 目录
文件系统对应的目录设置为/kingbase/data

开始安装

导入镜像

  1. 导入tar包到docker镜像仓库

docker load -i /opt/kdb_x86_64_V008R006C008B0014.tar

image

  1. 查看导入的镜像

docker images

image

运行镜像

  1. 启动docker容器
docker run -idt --privileged -p 
     
     
      
       
        
         
         
           h 
          
         
           o 
          
         
           s 
          
         
           t 
          
         
           p 
          
         
           o 
          
         
           r 
          
         
           t 
          
         
        
          : 
         
        
       
         {hostport}: 
        
      
     
     hostport:{containerport} –v 
     
     
      
       
        
         
         
           h 
          
         
           o 
          
         
           s 
          
         
           t 
          
         
           p 
          
         
           a 
          
         
           t 
          
         
           h 
          
         
        
          : 
         
        
       
         {hostpath}: 
        
      
     
     hostpath:{containerpath} --name 
     
     
      
       
        
        
          s 
         
        
          u 
         
         
         
           b 
          
         
           c 
          
         
        
          o 
         
        
          n 
         
        
          t 
         
        
          a 
         
        
          i 
         
        
          n 
         
        
          e 
         
        
          r 
         
        
       
         {sub_ container} 
        
      
     
     subcontainer{image} /usr/sbin/init

docker run -tdi --privileged -p 4321:54321 -v /kingbase/data:/home/kingbase/userdata/data --name kingbase kingbase_v008r006c008b0014_single_x86:v1 /usr/sbin/init



## PS:run命令解析
docker run:启动一个新的 Docker 容器。
-t:分配一个伪终端。
-i:交互式模式,保持 STDIN 打开。
-d:容器以分离模式启动,后台运行。
--privileged:给予容器额外的权限,允许执行几乎所有的主机操作。
-p 4321:54321:将主机的 4321 端口映射到容器的 54321 端口。
-v /docker:/home/kingbase/userdata/data:将主机的 /docker 目录挂载到容器的 /home/kingbase/userdata/data 目录,使得这两个目录间共享数据。
--name kingbase:将容器命名为 kingbase。
kingbase_v008r006c008b0014_single_x86:v1:使用名称为 kingbase_v008r006c008b0014_single_x86并带有 v1 标签的镜像来创建容器。
/usr/sbin/init:容器启动时执行的命令。在这种情况下,是启动容器的 init 系统。

image

使用 -v 参数挂载容器内数据目录到宿主机进行持久化,,可以通过以下命令查看挂载是否生效,或者直接df -h​查看文件系统挂载

docker inspect -f ‘{{.Mounts}}’ kingbase

image

  1. docker logs查看容器脚本执行日志

docker logs kingbase

image

  1. 进入容器

docker exec -it kingbase /bin/bash

image

image

访问数据库

数据库默认用户名:system

数据库默认密码:123456

数据库默认 data 目录:/home/kingbase/userdata/data

ksql -Usystem -dtest -p54321

image

  1. 容器运行配置
docker run -tid \
--name kingbase \
-e ENABLE_CI=
     
     
      
       
        
         
         
           e 
          
         
           n 
          
         
           a 
          
         
           b 
          
         
           l 
          
          
          
            e 
           
          
            c 
           
          
         
           i 
          
         
        
            
         
        
          − 
         
        
          e 
         
        
          N 
         
        
          E 
         
        
          E 
         
         
         
           D 
          
         
           S 
          
         
        
          T 
         
        
          A 
         
        
          R 
         
        
          T 
         
        
          = 
         
        
       
         {enable_ci} \ -e NEED_START= 
        
      
     
     enableci eNEEDSTART={need_start} \
-e DB_USER=
     
     
      
       
        
         
         
           u 
          
         
           s 
          
         
           e 
          
         
           r 
          
         
           n 
          
         
           a 
          
         
           m 
          
         
           e 
          
         
        
            
         
        
          − 
         
        
          e 
         
        
          D 
         
         
         
           B 
          
         
           P 
          
         
        
          A 
         
        
          S 
         
        
          S 
         
        
          W 
         
        
          O 
         
        
          R 
         
        
          D 
         
        
          = 
         
        
       
         {username} \ -e DB_PASSWORD= 
        
      
     
     username eDBPASSWORD={passwd} \
-e DB_MODE=${dbmode} \
kingbase_v008r006c008b0014_single_x86:v1 \
/bin/bash


#参数解释
- ENABLE_CI: 是否需要配置大小写敏感
  yes(默认大小写不敏感)/no(大小写敏感)

- NEED_START: 进入容器后是否启动数据库
  yes(默认启动)/no(大小写敏感)

- DB_USER: 数据库用户

- DB_PASSWORD: 数据库初始密码

- DB_MODE: 数据库模式
  支持 oracle/pg/mysql

这里我们控制配置

docker run -tid \
--name kingbase \
--privileged \
-p 4321:54321 \
-e ENABLE_CI=yes \
-e NEED_START=yes \
-e DB_USER=kingbase \
-e DB_PASSWORD=123456 \
-e DB_MODE=oracle \
kingbase_v008r006c008b0014_single_x86:v1 \
/bin/bash

PS: docker修改配置重新run需要先stop docker并remove

[root@kb01 ~]# docker stop kingbase && docker rm kingbase
kingbase
kingbase
[root@kb01 ~]# docker run -tid \
> --name kingbase \
> --privileged \
> -p 4321:54321 \
> -e ENABLE_CI=yes \
> -e NEED_START=yes \
> -e DB_USER=kingbase \
> -e DB_PASSWORD=123456 \
> -e DB_MODE=oracle \
> kingbase_v008r006c008b0014_single_x86:v1 \
> /bin/bash
13a8d212305be0f114a00d4d76f50b714444f456844197852df357ce2df28f69
[root@kb01 ~]#
[root@kb01 ~]#
[root@kb01 ~]# docker ps
CONTAINER ID   IMAGE                                      COMMAND                   CREATED         STATUS         PORTS
                       NAMES
13a8d212305b   kingbase_v008r006c008b0014_single_x86:v1   "/bin/bash /home/kin…"   5 seconds ago   Up 3 seconds   0.0.0.0:4321->54321/tcp, :::4321->54321/tcp   kingbase
[root@kb01 ~]# docker logs kingbase
chmod: cannot access '/home/kingbase/userdata/data': No such file or directory
The files belonging to this database system will be owned by user "kingbase".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default database encoding has accordingly been set to "SQL_ASCII".
The default text search configuration will be set to "english".

The comparision of strings is case-insensitive.
Data page checksums are disabled.

fixing permissions on existing directory /home/kingbase/userdata/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
Begin setup encrypt device
initializing the encrypt device ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
create security database ... ok
load security database ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing sys_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /home/kingbase/install/kingbase/bin/sys_ctl -D /home/kingbase/userdata/data -l logfile start

waiting for server to start.... done
server started
* * * * * kingbase /home/kingbase/docker-entrypoint.sh check_and_run /home/kingbase/userdata/data >> /home/kingbase/cronlog
  1. 宿主机直接登录数据库

容器端口54321在宿主机的映射是4321,在宿主机可以通过该端口直接连接数据库

image

  1. License.dat 持久化及更换 license

容器启动后对应的数据库license.dat 文件会复制到 etc 持久化目录,并软连接到data目录下

image

image

image

更新license直接替换data目录etc下的license.dat文件,并修改成755权限

chown kingbase:kingbase /home/kingbase/userdata/etc/license.dat
chmod 755 /home/kingbase/userdata/etc/license.dat
  1. 数据库配置文件持久化及修改配置文件后生效

启动容器后, 相关配置文件会随着 data 目录一起持久化,包括 kingbase.conf、kingbase_auto.conf、sys_hba.conf 等配置文件;在持久化目录中修改配置文件后,使用如下命令使修改生效

/home/kingbase/install/kingbase/bin/sys_ctl reload -D /home/kingbase/userdata/data/

数据库检查

访问数据库

  1. 容器内访问

在容器启动配置中设置过默认数据库和密码,所以在容器内直接ksql​即可访问数据库kingbase

image

  1. 容器外访问

容器外访问需要到对应目录,改变映射端口、加上-h参数,并输入密码

image

数据库版本查看

select version();

image

数据库启停

在容器kingbase用户下

--启动
sys_ctl start -D /home/kingbase/userdata/data 

--关停
sys_ctl stop  -D /home/kingbase/userdata/data -m immediate

卸载容器

  1. 停止容器运行

docker stop c o n t a i n e r i d / {container_id}/ containerid/{contain_name}

  1. 删除容器

docker rm c o n t a i n e r i d / {container_id}/ containerid/{contain_name}

  1. 删除镜像

docker rmi i m a g e i d / {image_id}/ imageid/{image_name:tag}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows上安装Docker可以按照以下步骤进行操作: 1. 首先,确保你的Windows版本是Windows 10或者Windows Server 2016以上,并且开启了Hyper-V虚拟化功能。 2. 前往Docker官网(https://www.docker.com/)下载Docker Desktop for Windows安装程序。 3. 运行安装程序,按照提示进行安装安装完成后,Docker会自动启动。 4. 在系统托盘中找到Docker图标,右键点击选择"Settings",进入设置界面。 5. 在设置界面中,可以配置Docker的一些选项,例如镜像加速器、资源限制等。根据需要进行配置。 6. 完成配置后,点击"Apply & Restart"按钮,Docker会重新启动应用配置。 至此,你已经成功在Windows上安装Docker。 接下来,如果你想在Docker安装数据库,可以按照以下步骤进行操作: 1. 打开Docker Desktop应用,确保Docker已经启动。 2. 在命令行或者终端中输入以下命令来搜索并下载数据库的Docker镜像: ``` docker search 数据库名称 ``` 3. 选择一个合适的镜像,并使用以下命令来下载该镜像: ``` docker pull 镜像名称 ``` 4. 下载完成后,使用以下命令来创建并运行一个数据库容器: ``` docker run --name 容器名称 -e 环境变量 镜像名称 ``` 其中,容器名称是你给容器起的一个名字,环境变量是数据库的配置信息,镜像名称是你下载的数据库镜像的名称。 5. 容器创建成功后,你可以使用以下命令来管理容器: - 启动容器:`docker start 容器名称` - 停止容器:`docker stop 容器名称` - 进入容器:`docker exec -it 容器名称 bash` 通过以上步骤,你可以在Docker中成功安装和运行数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值