Skip to content

Docker 通过 Debian 镜像安装达梦数据库

制作容器

Debian 基础镜像:https://hub.docker.com/_/debian/tags?name=stable

shell
docker pull debian:stable-20250520

# 运行容器(必须加 -itd 参数)
docker run --name dm8 -itd debian:stable-20250520

# 以 root 用户进入容器
docker exec -it --user root dm8 /bin/bash

注意:默认以 root 用户进入容器,如果在容器中切换用户(比如:dmdba 用户):

  • 使用 su - dmdba 即可切换为 dmdba 用户。
  • 切换回 root 用户,只需要输入 exit,然后回车即可。

启用 ll 命令(方便查看文件)

参考章节:Linux 常见问题及解决方式#ll-command-not-found

切换为国内源

参考:Linux 配置国内 repo 源

安装必要的软件包

shell
apt update

# 关于 p7zip: 【Debian 系只需要安装 p7zip-full】【red hat 系需要安装 p7zip p7zip-plugins 两个】
# procps: ps 命令支持,启动达梦时需要。
apt -y install vim curl p7zip-full procps

然后按照文档【达梦数据库之 CentOS 7.9 安装】来安装达梦即可。如果需要重启的话,docker restart dm8 即可。

安装完成后

打包容器为镜像

注意 DmServiceDAMENG 和 DmAPService 的路径:

  • Debian 系一般在:/etc/init.d/
  • Red Hat 系一般在:/etc/rc.d/init.d/
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/init.d/DmServiceDAMENG start && /etc/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