DM8 Docker云环境部署

前言

今天收到达梦培训中心,DM8-DCA认证考试结果通知,看到领取证书说明,需要一个月内提交一份精品博文一篇,看了一下达梦在线服务平台中的博客,感觉再提交一些重复的就没什么意义(之前做过大量的DataWatch、RWC、主备集群+异步库、DPC集群、DSC共享存储集群等搭建和测试),想来想去准备找一个亮点,博客上没有的,基于docker安装dm8单机版。初次先学习docker如何安装,如何在docker上安装DM8,docker环境连接DM8,docker环境如何启停数据库。后面如果有时间,我会再写docker的dm8 DataWatch, docker的dm8 RWC, docker的dm8 DSC, k8s环境下的dm8等。

环境说明

类别 版本 介质 操作系统 Centos7.9 CentOS-7.9-x86_64-DVD.iso Docker 24.0.6 docker-24.0.6.tgz Dm8 Docker DM8开发版 dm8_20230808_rev197096_x86_rh6_64_single.tar

Docker安装(离线安装)

Docker可以离线安装,也可以在线安装,如果要在线安装需要准备一台可以上外网的机器,直接从镜像仓库拉取镜像安装。如果要离线安装就需要提前下载好docker离线安装包,并上传到服务器上。这里采用离线安装的方式进行,下次的博客我会采用在线安装方式,尽请留意。

Docker有rpm版本和源码版本,这里采用源码版本进行安装。

上传并解压docker

# docker-24.0.6.tgz上传至/opt目录

# tar -zxvf docker-24.0.6.tgz

文件移到/usr/bin

cp -rp /opt/docker/* /usr/bin/

注册docker为系统服务

vi /etc/systemd/system/docker.service

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

 

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.

# Only systemd 226 and above support this version.

#TasksMax=infinity

TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

# restart the docker process if it exits prematurely

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

添加权限

添加权限后启动

chmod +x /etc/systemd/system/docker.service

重新加载配置文件

systemctl daemon-reload

Docker启动

systemctl start docker

systemctl enable docker

查看docker状态

systemctl status docker

查看docker版本

# docker version

Client:

 Version:           24.0.6

 API version:       1.43

 Go version:        go1.20.7

 Git commit:        ed223bc

 Built:             Mon Sep  4 12:30:51 2023

 OS/Arch:           linux/amd64

 Context:           default

Server: Docker Engine - Community

 Engine:

  Version:          24.0.6

  API version:      1.43 (minimum version 1.12)

  Go version:       go1.20.7

  Git commit:       1a79695

  Built:            Mon Sep  4 12:32:17 2023

  OS/Arch:          linux/amd64

  Experimental:     false

 containerd:

  Version:          v1.7.3

  GitCommit:        7880925980b188f4c97b462f709d0db8e8962aff

 runc:

  Version:          1.1.9

  GitCommit:        v1.1.9-0-gccaecfc

 docker-init:

  Version:          0.19.0

  GitCommit:        de40ad0

到此docker安装完成。

Docker简单查询

[root@dm8docker ~]# docker images

REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

[root@dm8docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

docker images:本地镜像

docker ps:活动的docker(正在运行的)

这里没有任何东西,因为只安装了docker软件,应用或者数据库都还没有开始部署。

DM8云版本安装

下载DM8 Docker镜像

请到达梦官网下载产品下载-达梦数据下载DM8 Docker镜像安装包。

这个版本是X86_64位 for Linux版本。麒麟V10会报错。

导入安装包

拷贝安装包到 /opt 目录下,执行以下命令导入安装包:

docker load -i /opt/dm8_20230808_rev197096_x86_rh6_64_single.tar

结果显示如下:

查看DM8镜像

导入完成后,可以使用docker images查看导入的镜像。结果显示如下:

docker images

TAG:云版本DM8版本号

IMAGE ID:导入镜像ID号

创建容器

镜像导入后,使用docker run启动容器,启动命令如下:

--简单:

docker run -d -p 25236:5236  --name DAMENG  -e INSTANCE_NAME=DMSERVER -e LD_LIBRARY_PATH=/opt/dmdbms/bin  -v /data:/dm8/dmdbms/data   ab98e2f4a568

参数说明:

-p 25236:5236                    #将docker内DM8的5236端口映射到外面25236

--name DAMENG                    #数据库名

INSTANCE_NAME=DMSERVER           #数据库实例

LD_LIBRARY_PATH=/opt/dmdbms/bin  #docker内DM8安装路径

ab98e2f4a568                     #镜像ID

/data:/dm8/dmdbms/data           #将镜像内/dm8/dmdbms/data映射到外面/data目录

--复杂:

docker run -d -p 25236:5236 --restart=always --name DAMENG --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e EXTENT_SIZE=32 -e BLANK_PAD_MODE=1 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=1 -e INSTANCE_NAME=DMSERVER -v /data:/opt/dmdbms/data ab98e2f4a568

或者

docker run -d -p 25236:5236 --restart=always --name DAMENG --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e EXTENT_SIZE=32 -e BLANK_PAD_MODE=1 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=1 -e INSTANCE_NAME=DMSERVER -v /data:/opt/dmdbms/data dm8_single:dm8_20230808_rev197096_x86_rh6_64

说明:

ab98e2f4a568:查看docker images获得镜像ID号

dm8_single:dm8_20230808_rev197096_x86_rh6_64:查看docker images获得镜像名称

删除容器

如果安装失败,手工删除再重建

docker remove -f 56d76d12f322

查看镜像启动情况

容器创建完成后,使用docker ps查看镜像的启动情况,结果显示如下:

查看镜像DM8进程情况

查看持久化目录

ls -al /data/DAMENG/

查看日志情况

启动完成后,可通过日志检查启动情况,命令如下:

docker logs -f  DAMENG

docker logs -f 56d76d12f322

结果显示如下:

DM8启/停数据库

docker停止数据库

# docker stop DAMENG

# docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

docker启动数据库

docker start  DAMENG

重启命令如下:

docker restart  DAMENG

进入容器停数据库

[root@dm8docker ~]# docker exec -it 56d76d12f322 bash

root@56d76d12f322:/# cd /opt/dmdbms/bin

root@56d76d12f322:/opt/dmdbms/bin#

这个版本把注册服务包拿掉了,不能注册,不能重启,只能在docker层面启停。

进入容器文件系统

DM8 Docker镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001

如果使用 docker 容器里面的 disql,进入容器后,先执行 source /etc/profile 防止中文乱码。

[root@dm8docker ~]# docker exec -it 56d76d12f322 bash

容器登录DM8数据库

root@56d76d12f322:/# source /etc/profile

root@56d76d12f322:/# cd /opt/dmdbms/bin

root@56d76d12f322:/opt/dmdbms/bin# ./disql SYSDBA/SYSDBA001

Server[LOCALHOST:5236]:mode is normal, state is open

login used time : 4.950(ms)

disql V8

SQL> select status$ from v$instance;

LINEID     STATUS$

---------- -------

1          OPEN

used time: 2.271(ms). Execute id is 600.

SQL> select name from v$database;

LINEID     NAME 

---------- ------

1          DAMENG

used time: 1.119(ms). Execute id is 601.

SQL> select instance_name from v$instance;

LINEID     INSTANCE_NAME

---------- -------------

1          DMSERVER

安装宿主机DM8客户端

# mount -o loop /soft/linux_x86_64/dm8_20240116_x86_rh7_64.iso  /mnt

# cd /mnt

# ./DMInstall.bin -i

宿主机登录容器DM8

[root@dm8docker ~]# cd /dm8/bin

[root@dm8docker bin]# ./disql SYSDBA/SYSDBA001@127.0.0.1:25236

宿主机使用管理工具

[root@dm8docker /]# cd /dm8/tool/

[root@dm8docker tool]# export DISPLAY=84.0.191.1:0.0

[root@dm8docker tool]# ./manager

今天就写到这里,后面会在docker环境做备份恢复测试、dm8 DataWatch、 dm8 RWC、 docker的dm8 DSC, 、k8s环境下的dm8等。

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: