1 安装Docker
1.1 设置系统语言
因为操作过程中不可避免地出现中文内容,故首先把OS语言设置一下,以防在数据库安装和Docker Repository
中展示docker-ce
的可用源列表时出现中文乱码问题;
进行下述语言和字符编码设置之前,确保你已经安装了中文字体;下述命令安装的中文语言包在绝大多数Linux发行版上都能很好地支持中文显示:
sudo yum install wqy-zenhei-fonts
# 或
sudo yum install wqy-microhei-fonts
使用vi / vim或nano
等编辑文件,往.bashrc
中添加如下内容,设置系统字符编码格式为UTF-8
:
cd ~
vim .bashrc
# 在.bashrc文件的末尾添加如下内容:
# Set language environment
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
对新增的参数LANG
和LC_ALL
解释如下:
- LANG:设置主要的语言和地区
- LC_ALL:覆盖所有其他
LC_*
的变量,强制使用指定的语言和地区
接下来,确保.bash_profile文件中包含.bashrc,这样在登录时也会应用这些设置。确保在.bash_profile中下述代码存在,若不存在则须自行添加:
# Source .bashrc if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
完成上述两步骤后,使用source
命令持久化上述更改:
source ~/.bashrc
最后,验证上述更改是否生效:
echo $LANG
echo $LC_ALL
这会打印语言设置。若输出显示为 zh_CN.UTF-8
,则说明你已成功设置系统语言。
1.2 前置依赖包准备
不指定具体版本情况下更新系统包并不推荐,因为可能会导致切换到不稳定版本导致莫名其妙的依赖问题。如果仍想要确保安装的包和依赖是最新的,运行以下命令:
sudo yum update -y
【Docker本体】的依赖项包括yum-utils, device-mapper-persistent-data, lvm2等,其安装命令在下面给出:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-utils:简单来说,【yum-utils】是对【yum本体】的拓展;安装【yum-utils】能够提供提供额外的命令和安装选项,用于补充【yum本体】中找不到的目标包等。
- device-mapper-persistent-data:【Device Mapper】是Linux内核中的一项功能,旨在为块设备提供映射层,使得可以通过它在物理设备之上创建虚拟设备 / 构建更复杂的存储配置,如RAID、LVM、磁盘加密等;而【device-mapper-persistent-data】是【Device Mapper】的一个用户空间库,提供了一些工具和持久化数据存储功能。在Docker中,当Docker使用【Device Mapper】存储驱动时,【device-mapper-persistent-data】用于管理Docker容器的存储层。
- lvm2:【lvm2】是【LVM】的用户空间工具集,它包括了一些命令行工具,用于管理逻辑卷、卷组和物理卷;在作为Docker依赖项的场景下,Docker的【devicemapper存储驱动】可以利用LVM来管理容器的存储。通过 LVM,Docker 可以创建快照和克隆镜像,从而提高容器的启动速度和存储管理的效率。
总体上,【device-mapper-persistent-data】和【lvm2】都与Docker的分层存储密切相关。
上述依赖添加完成后,我们这里选择通过给yum添加docker官方仓库的方式安装Docker本体。首先在yum中添加 Docker 的官方仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.3 Docker本体安装
Docker分为Desktop(桌面版)、CE(Community Edition)和EE(Enterprise Edition)版本:
- Docker CE:开源免费,面向开发者和小型团队,分为稳定版和测试版;其中稳定版每季度发布一次,提供较长的支持周期,适用于需要稳定环境的用户。
- Docker EE:是一个订阅服务,提供企业级支持和认证容器、插件和管理工具,适合大规模生产环境。在安全性、可扩展性(支持高可用性和负载均衡等企业级功能)、官方技术支持和保证等方面具有优势。Docker EE同样分为稳定版和测试版,但每个版本的支持周期比Docker CE长。
- Moby Project:Docker 的核心组件已经迁移至名为 Moby 的开源项目,Moby 旨在推动容器生态系统的开发。Docker CE 由 Moby 项目支持,而 Docker EE 则由 Docker 公司直接支持和维护。
- Docker Desktop:Docker Desktop 是为 【macOS】 和【 Windows】 设计的 Docker 应用程序,提供图形化界面,简化了安装环境;同时包括了一个单节点的Kubernetes集群,可以一键启用,允许开发者在本地测试和开发Kubernetes配置。
在主流Linux发行版中一般使用CE版本安装Docker CE(Community Edition)。
给出安装Docker CE的命令如下::
sudo yum install -y docker-ce docker-ce-cli containerd.io
上述命令中的【docker-ce】、【docker-ce-cli】和【containerd.io】分别是Docker CE的核心组件,对其解析如下:
- docker-ce:docker-ce是Docker CE的主要包,包含了Docker Engine和Docker Daemon,负责管理和创建Docker容器;
- docker-ce-cli:docker-ce-cli是Docker的命令行界面工具包,提供了Docker命令行工具,允许用户与Docker Daemon进行交互,是用户执行所有Docker相关命令的接口;
- containerd.io:严格来说器名为是containerd,而containerd.io是其项目官网域名;它是一个轻量级的开源容器,与OS交互,在架构中扮演中间件的角色,提供必要的服务以支持上层的Docker Engine和其他可能的客户端;是Docker Engine的核心依赖之一,处理低级别的容器管理任务,一开始作为Docker Engine的一部分,后来被拆分出来作为一个独立的项目进行开发,以支持更广泛的容器生态系统需求,并为例如Kubernetes的其他工具或系统提供服务。
Docker Engine和containerd体现了一种分层关系。containerd专注于性能和可靠性,保证容器的有效和安全运行;而Docker Engine集中于用户体验和高级功能。
安装完成后,启动Docker服务并配置其为开机自启动:
sudo systemctl start docker
sudo systemctl enable docker
运行docker --version
命令,验证Docker是否安装成功。命令及其返回结果如下:
[dmdba@VM-8-6-centos ~]$ docker --version
Docker version 26.1.4, build 5650f9b
很多情况下,公共的Docker Hub访问会遇到网络问题导致镜像无法被pull下来。我们这里通过配置阿里云镜像加速器来解决这一问题:
sudo vim /etc/docker/daemon.json
在daemon.json
文件中添加如下内容(若没有该文件则自行创建):
{
"registry-mirrors": ["https://<加速器地址>"]
}
获取加速器地址需要一个属于自己的Aliyun账号;若已有账号,可直接前往镜像加速器页获取地址和不同系统的配置步骤。
接下来尝试运行一个测试容器来验证Docker是否正常工作。输入命令和执行结果如下:
[dmdba@VM-8-6-centos ~]$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
至此,完整的Docker安装过程已完成。
1.4 Docker Pull与Docker Push的超时、循环Retry问题解决
问题出在网络上,至于原因…当然是由于一些众所周知的不便。
1.4.1 Docker Pull
Docker Pull的解决方式相对简单,只要在Docker配置文件/etc/docker/daemon.json
中配置镜像源即可,其关键在于找到真正可用的镜像源。在本文的过程中我尝试了Aliyun、Tencentyun的镜像配置,但仍旧无法解决问题,而我的ECS由后者提供;至于后来能够跑通是由于找到了另外可用的镜像源。对配置文件内容编辑的基本格式如下:
{
"registry-mirrors": [
"placeholder_1"
],
"dns": [
"placeholder_2"
]
}
在上述两个占位符placeholder_1
和placeholder_2
的位置分别可以配置镜像源地址和DNS。前者是必需项,而后者可以在能够改善解析速度的情况下选择性编辑。
1.4.2 Docker Push
在配置镜像源之后,没有解决我的Docker Push的超时问题。查阅资料得到以下几种可行的思路:
- Github Actions充当Proxy,利用其给个人分配的VM Env(每次都会初始化,IP随机,但会预装Docker),首先将Image推送到Actions VM,再由Actions VM推送到Docker Hub Repository。✅
- 多找几个备用的镜像地址(不过据反馈大部分知名的运作主体都发公告宣布不再提供支持或直接不可用)
- 挂全局代理(具体略)
- 自建Registry镜像站
- Cloudflare加速
- Nginx反代
最后选用了第一种:将Github Actions服务器来充当此处的Proxy,作为Docker Push命令的跳板,把我们的Docker Image推送到Docker Hub的对应仓库。当然,这需要Proxy预安装了Docker;目前,默认情况下VM环境预装的操作系统为ubuntu-latest
,其他的工具和软件包括常见的编程语言及其构建工具、用于版本控制的Git和SVN、容器和虚拟化产品、数据库和CI/CD功能等;而Docker就包含在其中。
按照Github Actions官方文档,新建Github仓库docker_image_proxy,在Project Root下新建.github/workflow/docker-publish.yml,在yml中按照规定的格式编辑名为Push Docker Image的workflow,每个workflow都会指定名称、触发方式、jobs及其运行环境(Linux, Windows和MacOS可选,其中Linux主要是Ubuntu、Windows主要是Windows Server;每种环境的免费时间和存储容量额度Linux > Windows > MacOS)、以及更细化的steps(规定每一步需要执行的命令)。
下面给出经过实践验证可行的YAML文件内容。注意需要:
- 启用CentOS的SSH公钥验证(编辑
/etc/ssh/sshd_config
,确保有PubkeyAuthentication yes
) - 在CentOS上使用
ssh-keygen
命令生成密钥对,确保~/.ssh
存在并授予700
权限、确保~/.ssh
目录下authorized_keys
和known_hosts
文件存在并分别授予600
和644
权限 - 同时在
Github Project(docker-image_proxy) > Settings > Secrets and variables > Actions
设置好SSH_PRIVATE_KEY、DOCKER_USERNAME和DOCKER_PASSWORD
三个变量 - 打开
个人账户 > Settings > SSH and GPG keys(我们这里只会用到SSH部分)
,在其中加入公钥id_rsa.pub
的内容。
name: Push Docker Image
on:
workflow_dispatch: # 手动触发
jobs:
image-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H your_host_ip >> ~/.ssh/known_hosts
- name: Debug SSH Key
run: |
ls -l ~/.ssh
cat ~/.ssh/id_rsa
- name: Copy Docker Image from CentOS
run: |
scp -i ~/.ssh/id_rsa username@your_host_ip:/home/username/DockerImages/myubuntu_duplicate.tar ./myubuntu_duplicate.tar
- name: Load Docker Image
run: docker load -i ./myubuntu_duplicate.tar
- name: Login in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{secrets.DOCKER_USERNAME}}
password: ${{secrets.DOCKER_PASSWORD}}
- name: Tag Docker Image
run: docker tag myubuntu:duplicate your_dockerhub_username/myubuntu:duplicate
- name: Push Docker Image to Docker Hub
run: |
docker push your_dockerhub_username/myubuntu:duplicate
值得注意的是,由于Github Actions工具每次启动都被分配了一个新的VM环境,所以IP并不确定,使得scp命令必须从Actions VM端发起。
1.5 一些关于可能会用到的其他工具的补充
- yum-cron:自动化工具,定期自动更新yum缓存并自动安装更新包,减少动手干预;出现报错提示
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
时可用。
2 DM8的Docker安装
2.1 镜像导入与容器运行
目前没有发现Docker Hub的公开镜像源的DM8镜像,不知道今后官方是否会考虑上线到Hub社区;暂时需要到官网获取安装包。
将Docker包下载到本机后,再用scp或ftp等将镜像包传输到CentOS主机的/opt
目录下,执行以下命令导入安装包:
[dmdba@VM-8-6-centos opt]$ docker load -i dm8_20240715_x86_rh6_rq_single.tar
4a1518ebc26e: Loading layer [==================================================>] 75.19MB/75.19MB
b8a4238f8cd3: Loading layer [==================================================>] 16.14MB/16.14MB
78f411f0a3f4: Loading layer [==================================================>] 16.87MB/16.87MB
ee7e3338d636: Loading layer [==================================================>] 1.185MB/1.185MB
ad2c3a0ea0ae: Loading layer [==================================================>] 354.8kB/354.8kB
f238a8da5f88: Loading layer [==================================================>] 1.035GB/1.035GB
29bea1477fed: Loading layer [==================================================>] 5.12kB/5.12kB
d9d4efb7df38: Loading layer [==================================================>] 4.608kB/4.608kB
a4d32f2d669a: Loading layer [==================================================>] 3.072kB/3.072kB
407cb6f411e4: Loading layer [==================================================>] 2.56kB/2.56kB
27fc5e1a3138: Loading layer [==================================================>] 2.56kB/2.56kB
b17f6a378f4d: Loading layer [==================================================>] 4.096kB/4.096kB
80c94e424fcb: Loading layer [==================================================>] 4.096kB/4.096kB
Loaded image: dm8_single:dm8_20240715_rev232765_x86_rh6_64
导入后可以使用docker images
查看导入的镜像,可以得知该Tarball是以Repository : Tag
形式打包的,所以才能在docker load
到镜像后还原为该形态。我们导入的镜像位于列表的倒数第三位:
[dmdba@VM-8-6-centos opt]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
simple-compose-project-app latest 5d689525c91d 3 days ago 58.2MB
<none> <none> 2251f388ea36 3 days ago 58.2MB
ubuntu ping_installed d4ae28ee37c7 4 days ago 119MB
my-node-app v1 5cd19a4acbd3 4 days ago 912MB
nginx-test v1 9f1b4379c0ae 5 days ago 193MB
ubuntu-test v1 54a89a3d7fd5 5 days ago 78.1MB
myubuntu duplicate 0338eb460f8b 9 days ago 78.1MB
nginx alpine 0f0eda053dc5 11 days ago 43.3MB
nginx latest 5ef79149e0ec 11 days ago 188MB
postgres alpine 15a7c2c4d159 2 weeks ago 245MB
dm8_single dm8_20240715_rev232765_x86_rh6_64 0880e3256f92 5 weeks ago 1.14GB
ubuntu latest 35a88802559d 2 months ago 78.1MB
hello-world latest feb5d9fea6a5 2 years ago 13.3kB
接下来,使用docker run
命令启动容器:
# 执行docker run命令前,记得将最后的Repository:Tag更换成之前导入的实际的镜像名和标签
[dmdba@VM-8-6-centos opt]$ docker run -d -p 30236:5236 --restart=always --name=dm8_test --privileged=true -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e PAGE_SIZE=16 -e EXTENT_SIZE=32 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e INSTANCE_NAME=dm8_test -v /opt/data:/opt/dmdbms/data dm8_single:dm8_20240715_rev232765_x86_rh6_64
09bd3a8a21a98af4ec13b56e7b77fdda52297c8b191e3879eeef80aaa5ed40c3
# 检验容器后台运行情况
[dmdba@VM-8-6-centos opt]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09bd3a8a21a9 dm8_single:dm8_20240715_rev232765_x86_rh6_64 "/opt/startup.sh" 4 seconds ago Up 3 seconds 0.0.0.0:30236->5236/tcp, :::30236->5236/tcp dm8_test
执行以下命令,会以JSON格式返回数据库初始化的所有详细参数:
docker inspect dm8_test
由于内容过多,我们只在这里插入代码片
选取其中Env
项的内容:
"Env": [
"INSTANCE_NAME=dm8_test",
"LD_LIBRARY_PATH=/opt/dmdbms/bin",
"PAGE_SIZE=16",
"EXTENT_SIZE=32",
"LOG_SIZE=1024",
"UNICODE_FLAG=1",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"SYSDBA_PWD=SYSDBA001",
"CASE_SENSITIVE=1",
"BUFFER=1000",
"MODE=dmsingle",
"CHG_PASSWD=dameng777",
"DM_USER_PWD=dameng777",
"BLANK_PAD_MODE=0",
"LANG=en_US.UTF-8"
],
这里会显示页大小PAGE_SIZE、簇大小EXTENT_SIZE、字符集UNICODE_FLAG和默认密码SYSDBA_PWD等数据项的配置。更多数据库初始化实例参数解释可参考达梦数据库安装目录下 doc 目录中《DM8_dminit 使用手册》。
通过日志检查Container的启动情况:
[dmdba@VM-8-6-centos opt]$ docker logs dm8_test
Script start.
file dm.key not found, use default license!
License will expire on 2025-06-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /opt/dmdbms/data/DAMENG/DAMENG01.log
log file path: /opt/dmdbms/data/DAMENG/DAMENG02.log
write to dir [/opt/dmdbms/data/DAMENG].
create dm database success. 2024-08-26 09:53:48
initdb V8
db version: 0x7000c
Init DM success!
Start DmAPService...
Starting DmAPService: [ OK ]
/opt/dmdbms/conf/dm.ini does not exist, use default dm.ini
Start DMSERVER success!
Dmserver is running.
DM Database is not OK, please wait...
DM Database is OK
Start DMSERVER success!
Dmserver is running.
DM Database is OK
Finished soft link DM current dm_DM8_TEST_202408.log to dm_DMSERVER.log
2024-08-26 09:54:10.677 [INFO] database P0000000101 T0000000000000000159 hpc_clear_active_trx adjust n_crash_active_trx from 0 to 0.
2024-08-26 09:54:10.677 [INFO] database P0000000101 T0000000000000000101 backup control file /opt/dmdbms/data/DAMENG/dm.ctl to file /opt/dmdbms/data/DAMENG/dm_20240826095410_677754.ctl
2024-08-26 09:54:10.680 [INFO] database P0000000101 T0000000000000000101 backup control file /opt/dmdbms/data/DAMENG/dm.ctl to file /opt/dmdbms/data/DAMENG/ctl_bak/dm_20240826095410_678491.ctl succeed
2024-08-26 09:54:10.680 [INFO] database P0000000101 T0000000000000000101 local instance name is DM8_TEST, mode is NORMAL, status is OPEN.
2024-08-26 09:54:10.680 [INFO] database P0000000101 T0000000000000000101 SYSTEM IS READY.
2024-08-26 09:54:10.680 [INFO] database P0000000101 T0000000000000000101 [for dem]SYSTEM IS READY.
2024-08-26 09:54:10.680 [INFO] database P0000000101 T0000000000000000101 set g_dw_stat from UNDEFINED to NONE success, g_dw_recover_stop is 0
2024-08-26 09:54:11.677 [INFO] database P0000000101 T0000000000000000156 trx4_min_tid_collect set min_active_id_opt, min_active_id: 6753, first_tid: 6006
2024-08-26 09:54:14.013 [INFO] database P0000000101 T0000000000000000257 dthrd_info_add nth:64, dthrd_info:0x7fc95e511e40, thrd_name:dm_sql_thd
2024-08-26 09:54:14.052 [INFO] database P0000000101 T0000000000000000277 dthrd_info_add nth:84, dthrd_info:0x7fc95e511e40, thrd_name:dm_sql_thd
2024-08-26 09:57:05.712 [INFO] database P0000000101 T0000000000000000247 checkpoint requested by INI_INTERVAL, rlog free space[2135257088], used space[12218368]
2024-08-26 09:57:05.712 [INFO] database P0000000101 T0000000000000000247 checkpoint generate by ckpt_interval
2024-08-26 09:57:05.712 [INFO] database P0000000101 T0000000000000000205 checkpoint begin, used_space[12218368], free_space[2135257088]...
2024-08-26 09:57:05.717 [INFO] database P0000000101 T0000000000000000205 ckpt2_log_adjust: full_status: 160, ptx_reserved: 0
2024-08-26 09:57:05.717 [INFO] database P0000000101 T0000000000000000205 ckpt2_log_adjust: ckpt_lsn(43947), ckpt_fil(0), ckpt_off(12218368), cur_lsn(43980), l_next_seq(3159), g_next_seq(3159), cur_free(12234752), total_space(2147475456), used_space(16384), free_space(2147459072), n_ep(1), db_open_id(1)
2024-08-26 09:57:05.717 [INFO] database P0000000101 T0000000000000000205 checkpoint end, 0 pages flushed, used_space[16384], free_space[2147459072].
2024-08-26 10:00:05.750 [INFO] database P0000000101 T0000000000000000247 checkpoint requested by INI_INTERVAL, rlog free space[2147459072], used space[16384]
2024-08-26 10:00:05.750 [INFO] database P0000000101 T0000000000000000247 checkpoint generate by ckpt_interval
2024-08-26 10:00:05.750 [INFO] database P0000000101 T0000000000000000205 checkpoint begin, used_space[16384], free_space[2147459072]...
2024-08-26 10:00:05.750 [INFO] database P0000000101 T0000000000000000205 ckpt2_log_adjust->rlog4_first_rpkg_seqno_get, fil_id:0, off:12234752, code:-723, l_next_seq:1911, clsn_l_seqno:3155, change db_open_id from 0 to 1
2024-08-26 10:00:05.753 [INFO] database P0000000101 T0000000000000000205 ckpt2_log_adjust: full_status: 160, ptx_reserved: 0
2024-08-26 10:00:05.753 [INFO] database P0000000101 T0000000000000000205 ckpt2_log_adjust: ckpt_lsn(43980), ckpt_fil(0), ckpt_off(12234752), cur_lsn(43980), l_next_seq(3159), g_next_seq(3159), cur_free(12234752), total_space(2147475456), used_space(0), free_space(2147475456), n_ep(1), db_open_id(1)
2024-08-26 10:03:05.787 [INFO] database P0000000101 T0000000000000000247 checkpoint requested by INI_INTERVAL, rlog free space[2147475456], used space[0]
2024-08-26 10:03:05.787 [INFO] database P0000000101 T0000000000000000247 checkpoint generate by ckpt_interval
2024-08-26 10:03:05.787 [INFO] database P0000000101 T0000000000000000205 checkpoint begin, used_space[0], free_space[2147475456]...
2024-08-26 10:03:05.788 [INFO] database P0000000101 T0000000000000000205 ckpt2_log_adjust: full_status: 160, ptx_reserved: 0
2024-08-26 10:03:05.788 [INFO] database P0000000101 T0000000000000000205 ckpt2_log_adjust: ckpt_lsn(43980), ckpt_fil(0), ckpt_off(12234752), cur_lsn(43980), l_next_seq(3159), g_next_seq(3159), cur_free(12234752), total_space(2147475456), used_space(0), free_space(2147475456), n_ep(1), db_open_id(1)
2.2 数据库启停与连接操作
停止、启动、重启数据库命令如下:
[dmdba@VM-8-6-centos opt]$ docker stop dm8_test
dm8_test
[dmdba@VM-8-6-centos opt]$ docker start dm8_test
dm8_test
[dmdba@VM-8-6-centos opt]$ docker restart dm8_test
dm8_test
执行以下命令进入DM8容器:
[dmdba@VM-8-6-centos opt]$ docker exec -it dm8_test bash
root@09bd3a8a21a9:/#
根据先前docker logs
命令输出可以看出,容器内不已经初始化了一个数据库实例;数据库安装位置在/opt/dmdbms
,而数据库实例位置在/opt/dmdbms/data/DAMENG
;
如果使用docker容器里面的disql
交互工具,进入容器后需要先执行以下命令防止中文乱码:
source /etc/profile
切换到/opt/dmdbms/bin
,执行以下命令使用disql
连接数据库。DBA用户密码已由先前的docker inspect
命令返回结果给出:
root@09bd3a8a21a9:/opt/dmdbms/bin# ./disql SYSDBA/SYSDBA001
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 2.540(ms)
disql V8
SQL>
此时能够看出已成功连接到数据库。