版本要求:docker19.0以上,官网要求22年8月以后版本。
服务器版本:X86架构(达梦本身支持很多种架构,这里仅表示本地环境是x86)、
wget {docker官网}docker-20.10.24.tgz -P /usr/local
cd /usr/local
tar -zvxf docker-20.10.24.tgz && mv docker-20.10.24/* /usr/bin
#启动docker,当然也可以配置一个docker.service放在/usr/lib/systemd/system/
dockerd &
# 如果需要配置额外的docker参数比如镜像加速等等,可以修改/etc/docker/daemon.json,systemctl daemon-reload 即可
wget https://download.dameng.com/eco/dm8/dm8_20220822_rev166351_x86_rh6_64_ctm.tar
# 加载到本地
docker load -i dm8_20220822_rev166351_x86_rh6_64_ctm.tar
[root@dev-notwo-201-95 ~]# docker images|grep dm
dm8_single v8.1.2.128_ent_x86_64_ctm_pack4 ccb727ce9dce 8 months ago 432MB
docker run -d -p 5236:5236 --restart=always --name dm8_01 \
--privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin \
-e INSTANCE_NAME=dm8_01 --mount source=dm8-vol,dst=/opt/dmdbms/data \
dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4
#-d 后台运行,
#-p 端口映射 宿主机端口:容器端口,
#--restart =always 开机启动
#--name容器名称。
#--privileged 特权模式,可以允许容器拥有一些主机的权限访问设备、文件, 比如绕过selinux,因此该方法仅适用于测试开发环境请谨慎在生产环境使用
#-e 后面就是dm数据库的一些参数。 包括页大小、簇大小,这里只设置了page_size 页大小,单位是KB,
#INSTANCE_NAME实例名称,
#--mount 就是挂载volume,路径一般是/var/lib/docker/volumes/{source名称},
#dst就是容器里的目录。 最后就是镜像了。
#查看日志
docker logs -f dm8_01
#进入容器,登录数据库(最新版的默认用户名密码:SYSDBA SYSDBA001)
docker exec -it dm8_01 bash
root@3a1e02fbfa84:/opt/dmdbms/bin# ./disql SYSDBA/SYSDBA001:5236
Server[LOCALHOST:5236]:mode is normal, state is open
login used time : 8.657(ms)
disql V8
SQL> exit
#退出当前容器CTRL + D
# 数据目录在这里
[root@dev-notwo-201-95 ~]# ll /var/lib/docker/volumes/dm8-vol/_data/DAMENG/
total 864348
drwxr-xr-x 2 root root 6 May 18 22:12 bak
drwxr-xr-x 2 root root 78 May 18 22:13 ctl_bak
-rw-r--r-- 1 root root 268435456 May 18 22:19 DAMENG01.log
-rw-r--r-- 1 root root 268435456 May 18 22:12 DAMENG02.log
-rw-r--r-- 1 root root 5632 May 18 22:13 dm.ctl
-rw-r--r-- 1 root root 59755 May 18 22:12 dm.ini
-rw-r--r-- 1 root root 973 May 18 22:12 dminit20230518221226.log
-rw-r--r-- 1 root root 633 May 18 22:12 dm_service.prikey
drwxr-xr-x 2 root root 6 May 18 22:12 HMAIN
-rw-r--r-- 1 root root 134217728 May 18 22:12 MAIN.DBF
-rw-r--r-- 1 root root 12 May 18 22:12 rep_conflict.log
-rw-r--r-- 1 root root 134217728 May 18 22:15 ROLL.DBF
-rw-r--r-- 1 root root 481 May 18 22:12 sqllog.ini
-rw-r--r-- 1 root root 52428800 May 18 22:18 SYSTEM.DBF
-rw-r--r-- 1 root root 27262976 May 18 22:12 TEMP.DBF
drwxr-xr-x 2 root root 6 May 18 22:12 trace
#数据库重启、停止等可以通过下面命令实现
docker start|stop|restart dm8_01
[root@dev-notwo-201-95 ~]# docker run -d -p 5236:5236 --restart=always --name dm8_01 --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e INSTANCE_NAME=dm8_01 --mount source=dm8-vol,dst=/opt/dmdbms/data dm8_single:v8.1.2.128_ent_x86_64_ctm_pack4
0378108e4eb4b5172d43d26591aae70837b7dca5d44b6288cb75bac54afcc5ee
docker: Error response from daemon: driver failed programming external connectivity on endpoint dm8_01 (a9dfcc1b993393aef533e6af9dac32c74e9d30db66aad43bf9f15ba90a0449a7): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5236 -j DNAT --to-destination 172.17.0.3:5236 ! -i docker0: iptables: No chain/target/match by that name.
解决办法:由于容器的端口映射是基于docker写入iptables实现,因此如果当前docker网络有变化根iptables上的规则无法对应就会导致iptable规则无法与正确网络绑定。systemctl restart docker 即可解决。
文章
阅读量
获赞