Docker 通过 OpenEuler 镜像安装达梦数据库
shell
# 拉取方式一: 默认方式,国内环境不建议使用
docker pull openeuler/openeuler:24.03-lts
# 拉取方式二:指定国内仓库,国内用户推荐使用
docker pull hub.oepkgs.net/openeuler/openeuler:24.03-lts
# 运行容器(必须加 -itd 参数)
docker run --name dm8 -itd hub.oepkgs.net/openeuler/openeuler:24.03-lts
# 以 root 用户进入容器
docker exec -it --user root dm8 /bin/bash
注意:
- 当前测试不能直接提交为镜像,这样在特定环境下,后面脱机还原时会报错。也可能不报错。
- 但是在容器中安装,并且脱机还原数据后,再打成镜像,然后启动就可以,目前原因不明。
- 初步判断应该是容器需要 --privileged=true 参数来增加权限,后续再测试吧。
进入容器后,后续需要安装一些软件,先更新下软件仓库。OpenEuler 中提供一个仓库服务,找不到的包可以在 https://search.oepkgs.net/zh-CN 搜索,然后点【查看】按钮,有怎么使用的说明。
shell
# 安装 config-manager 命令支持
dnf install dnf-plugins-core -y
# 添加源(主要是增加后面使用到的 p7zip-plugins 的软件源)
dnf config-manager --add-repo https://repo.oepkgs.net/openeuler/rpm/openEuler-20.03-LTS-SP4/compatible/rawhide/x86_64/
# 更新源索引
dnf clean all && dnf makecache
# 安装支持 groupad、useradd 和 passwd 命令的工具
dnf install shadow-utils passwd -y
# 安装支持 7z 解压命令以及可解压 iso 文件的插件。安装可能会 gpg 检查失败,增加 --nogpgcheck 参数规避。
dnf install -y p7zip p7zip-plugins --nogpgcheck
# (可选)安装 find 命令支持和查看端口监听的 netstat -tuln | grep 5236 命令支持
dnf install -y findutils net-tools
然后按照文档【达梦数据库之 CentOS 7.9 安装】来安装达梦即可。如果需要重启的话,docker restart dm8 即可。
安装完成后
打包容器为镜像
shell
# 格式:docker commit --change='CMD ["tail", "-f", "/dev/null"]' [容器ID/名称] [新镜像名]:[标签]
# 使用 tail -f /dev/null 参数防止容器启动后又退出
docker commit --change='USER dmdba' --change="EXPOSE 5236" --change='ENTRYPOINT ["/bin/sh", "-c", "/etc/rc.d/init.d/DmServiceDAMENG start && /etc/rc.d/init.d/DmAPService start && tail -f /dev/null"]' dm8 dm8:latest
注:
- /etc/rc.d/init.d/DmServiceDAMENG start:启动达梦数据库实例服务,管理具体数据库实例的运行。
- /etc/rc.d/init.d/DmAPService start:启动用于数据库的辅助管理、连接控制及备份/恢复等操作的服务。
启动新容器
shell
# 如果需要挂载卷,第一次启动时先不要挂载
docker run -itd --name dm -p 5236:5236 dm8:latest
# 格式:docker cp [容器名称或ID]:[容器内文件夹路径] [宿主机目标路径]
# 从容器中复制到宿主机: /opt/dmdbms
docker cp dm:/opt/dmdbms /opt
# 删除容器
docker rm -f dm
# 挂载卷
docker run -itd --name dm -p 5236:5236 -v /opt/dmdbms:/opt/dmdbms dm8:latest
推送到阿里仓库
shell
# 登录
docker login --username=mengweijin@aliyun.com registry.cn-hangzhou.aliyuncs.com
# tag 设置为数据库的过期时间,方便记忆和查看
docker tag 9f2621bf7d78 registry.cn-hangzhou.aliyuncs.com/mengweijin/dm8:20250117_x86_rh6_64
docker push registry.cn-hangzhou.aliyuncs.com/mengweijin/dm8:20250117_x86_rh6_64
docker rmi -f 1fb854a5d2a9