DM8 安装包打包成 Docker 镜像
本文介绍如何将达梦 DM8 的 Linux 安装包打包为私有 Docker 镜像。适用于达梦下载中心只提供.zip压缩包、解压后为.iso安装介质而没有提供可直接docker load的官方镜像包的情况。本文最终会构建出一个本地镜像dm8:local-amd64后续可以使用docker save导出该镜像在其他服务器通过docker load导入再部署 DM8 数据库。文章目录一、选择正确的 DM8 安装包二、从 ZIP 和 ISO 中提取 DMInstall.bin1. 创建构建目录2. 解压 ZIP 与 ISO三、准备镜像构建文件1. 创建静默安装配置文件2. 创建容器启动脚本3. 创建 Dockerfile四、构建 DM8 私有镜像五、首次运行验证镜像六、导出自建镜像到其他服务器七、常见问题1. 对 ISO 执行 docker load 报错2. 构建时报 exec format error3. DMInstall.bin 无法执行4. 构建时报 LANGUAGE 相关错误5. 重启容器后初始化参数没有变化6. 不要把镜像当成数据库备份一、选择正确的 DM8 安装包下载地址https://eco.dameng.com/download/在达梦下载中心的开发版页面按下面的组合选择下载项选择产品开发版X86 平台CPU 平台X86操作系统Ubuntu22当前宿主机即使是 Ubuntu 26.04也选择Ubuntu22。原因是本教程会使用ubuntu:22.04作为 Docker 基础镜像DM8 的 Ubuntu 22 安装介质与容器用户态匹配Docker 容器使用宿主机内核因此 Ubuntu 22 用户态可以运行在 Ubuntu 26.04 的 Docker 主机上。不要选择以下安装包选项不选择的原因Win_64得到的是 Windows 安装程序不能构建 Linux Docker 镜像。rh6、CentOS7需要配套的 RHEL/CentOS 基础镜像本教程不使用这一套环境。ARM 平台与amd64/x86_64Docker 主机不兼容。下载文件通常是.zip解压后包含.iso。这是正常的 DM8 Linux 安装介质不是 Docker 镜像不能执行docker load -i xxx.iso。二、从 ZIP 和 ISO 中提取 DMInstall.bin1. 创建构建目录以下命令在 Ubuntu Docker 主机上执行sudo install-d-m 0755/opt/dm8-image-build/download/opt/dm8-image-build/media sudo chown-R$USER:$USER/opt/dm8-image-build2. 解压 ZIP 与 ISO将下载到的dm8_..._x86_ubuntu22_64.zip上传到服务器任意目录。下面使用libarchive-tools解压不依赖挂载 ISO也适合没有图形界面的服务器sudo apt update sudo apt install-y libarchive-tools# pwd 查看路径 /home/wen/dm8bsdtar-xf/实际路径/dm8_实际版本_x86_ubuntu22_64.zip-C/opt/dm8-image-build/download上传的 DM8 安装包文件及其所在路径示例找到 ZIP 内的 ISO 文件find/opt/dm8-image-build/download-typef-iname*.iso将输出的实际 ISO 路径填入下面命令bsdtar-xf/opt/dm8-image-build/download/实际文件名.iso-C/opt/dm8-image-build/media find/opt/dm8-image-build/media-typef-nameDMInstall.bin把DMInstall.bin放到 Docker 构建目录根部install-m 0755/opt/dm8-image-build/media/DMInstall.bin/opt/dm8-image-build/DMInstall.binls-lh/opt/dm8-image-build/DMInstall.bin如果DMInstall.bin位于 ISO 解压后的子目录请把上面命令中的来源路径替换为find输出的实际路径。三、准备镜像构建文件进入构建目录cd/opt/dm8-image-build1. 创建静默安装配置文件创建dm_install.xml用于在 Docker 构建阶段无交互安装 DM8 软件但不在构建阶段创建数据库实例vim dm_install.xml?xml version1.0 encodingUTF-8?DATABASELANGUAGEEN/LANGUAGETIME_ZONE08:00/TIME_ZONEKEY/KEYINSTALL_TYPE1/INSTALL_TYPEINSTALL_PATH/home/dmdba/dmdbms/INSTALL_PATHINIT_DBN/INIT_DB/DATABASELANGUAGE只能使用ZH中文或EN英文值必须大写。本教程的ubuntu:22.04基础镜像默认不是中文 OS因此使用EN这只影响安装器界面语言不影响数据库字符集。INSTALL_TYPE为1时只安装数据库服务器组件INIT_DB设置为N数据库实例会在容器首次运行时创建。达梦的静默安装命令格式为./DMInstall.bin -q 配置文件全路径。2. 创建容器启动脚本创建docker-entrypoint.sh。脚本会在首次启动且数据目录为空时执行dminit初始化数据库后续启动发现已有dm.ini后只启动数据库不会重复初始化。vim docker-entrypoint.sh#!/usr/bin/env bashset-Eeuo pipefail DM_HOME/home/dmdba/dmdbms DATA_DIR${DM_DATA_DIR:-/opt/dmdbms/data}DB_NAME${DB_NAME:-DAMENG}DB_INI$DATA_DIR/$DB_NAME/dm.iniif[$(id-u)0];then mkdir-p$DATA_DIRchown-R dmdba:dinstall$DATA_DIRexec gosu dmdba$0$fiif[!-f$DB_INI];then :${SYSDBA_PWD:?首次启动必须设置 SYSDBA_PWD}:${SYSAUDITOR_PWD:?首次启动必须设置 SYSAUDITOR_PWD}$DM_HOME/bin/dminit\ PATH$DATA_DIR\ DB_NAME$DB_NAME\ INSTANCE_NAME${INSTANCE_NAME:-DMSERVER}\ PORT_NUM${PORT_NUM:-5236}\ PAGE_SIZE${PAGE_SIZE:-16}\ EXTENT_SIZE${EXTENT_SIZE:-32}\ LOG_SIZE${LOG_SIZE:-1024}\ CHARSET${CHARSET:-1}\ CASE_SENSITIVE${CASE_SENSITIVE:-0}\ SYSDBA_PWD$SYSDBA_PWD\ SYSAUDITOR_PWD$SYSAUDITOR_PWDfi exec$DM_HOME/bin/dmserver$DB_INI-noconsole3. 创建 Dockerfile创建Dockerfile。ubuntu:22.04与本篇选择的Ubuntu22DM8 安装包对应vim DockerfileFROM ubuntu:22.04 ENV DEBIAN_FRONTENDnoninteractive ENV DM_HOME/home/dmdba/dmdbms ENV DM_DATA_DIR/opt/dmdbms/data ENV PATH/home/dmdba/dmdbms/bin:$PATH ENV LD_LIBRARY_PATH/home/dmdba/dmdbms/bin RUN apt-get update \ apt-get install -y --no-install-recommends \ gosu \ libaio1 \ libnsl2 \ procps \ rm -rf /var/lib/apt/lists/* RUN groupadd --gid 1001 dinstall \ useradd --uid 1001 --gid dinstall --create-home --shell /bin/bash dmdba \ install -d -o dmdba -g dinstall $DM_HOME $DM_DATA_DIR /opt/dm-install WORKDIR /opt/dm-install COPY --chowndmdba:dinstall DMInstall.bin dm_install.xml ./ RUN chmod 0755 DMInstall.bin \ su -s /bin/bash dmdba -c /opt/dm-install/DMInstall.bin -q /opt/dm-install/dm_install.xml \ rm -rf /opt/dm-install COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh RUN chmod 0755 /usr/local/bin/docker-entrypoint.sh EXPOSE 5236 VOLUME [/opt/dmdbms/data] ENTRYPOINT [/usr/local/bin/docker-entrypoint.sh]如果在 Windows 编辑过docker-entrypoint.sh构建前统一为 Linux 换行符避免容器报/usr/bin/env: bash\r: No such file or directorysed-is/\r$//docker-entrypoint.sh镜像构建时必须能获得ubuntu:22.04基础镜像。若目标服务器没有外网应在可联网的机器构建然后按照本文后面的“导出镜像”步骤传到目标服务器。四、构建 DM8 私有镜像确认构建目录中有四个文件cd/opt/dm8-image-buildls-lh DMInstall.bin dm_install.xml docker-entrypoint.sh Dockerfile构建镜像docker build-t dm8:local-amd64.docker imagelsdm8成功后应能看到dm8:local-amd64。构建日志中DMInstall.bin -q返回成功说明 DM8 软件已经写入镜像此时尚未创建业务数据库数据。构建过程中不要将dm.key、真实数据库密码或业务数据写入 Dockerfile。若许可证需要单独文件应按照许可证要求在运行容器时以只读挂载方式提供。五、首次运行验证镜像先创建测试数据卷和两个示例密码docker volume create dm8-build-test-dataexport DM_SYSDBA_PWDDm8Pass2026Aexport DM_SYSAUDITOR_PWDDm8Audit2026A使用不常见的宿主机端口15236进行测试避免占用正式部署常用的5236docker run-d \--name dm8-build-test \--restartno \-p 15236:5236 \-v dm8-build-test-data:/opt/dmdbms/data\-e DB_NAMEDM8TEST \-e INSTANCE_NAMEDM8TEST \-e PAGE_SIZE16 \-e EXTENT_SIZE32 \-e LOG_SIZE1024 \-e CHARSET1 \-e CASE_SENSITIVE0 \-e SYSDBA_PWD$DM_SYSDBA_PWD\-e SYSAUDITOR_PWD$DM_SYSAUDITOR_PWD\ dm8:local-amd64查看启动日志docker logs-f dm8-build-test日志确认数据库已启动后使用disql验证docker exec-it dm8-build-test/home/dmdba/dmdbms/bin/disql SYSDBA/Dm8Pass2026A登录后执行selectnamefromv$database;selectinstance_name,status$fromv$instance;exit;实例状态为OPEN即表示自建镜像可以正常初始化和运行。六、导出自建镜像到其他服务器docker save导出的是镜像本身不包含测试数据卷或容器数据。为防止把不同 CPU 架构的镜像混淆构建标签、传输标签和归档文件统一使用dm8:local-arch、dm8:offline-arch与dm8-offline-arch.tar。Docker 架构标识常见系统输出构建镜像标签传输镜像标签归档文件名amd64x86_64、x64dm8:local-amd64dm8:offline-amd64dm8-offline-amd64.tararm64aarch64、arm64dm8:local-arm64dm8:offline-arm64dm8-offline-arm64.tar本文使用的是 X86 安装包因此下面的实际示例为amd64。x86通常表示 32 位架构不是本文支持的x86_64/amd64环境。若要导出 ARM 镜像必须先使用匹配的 ARM 安装包和基础镜像完成构建不能仅修改文件名。导出前确认镜像实际架构docker image inspect dm8:local-amd64--format{{.Architecture}}当前教程应输出amd64。随后重新打带架构标识的标签并导出cd/opt/dm8-image-build docker tag dm8:local-amd64 dm8:offline-amd64 docker save-o dm8-offline-amd64.tar dm8:offline-amd64 sha256sum dm8-offline-amd64.tar dm8-offline-amd64.tar.sha256ls-lh dm8-offline-amd64.tar dm8-offline-amd64.tar.sha256将这两个文件传到目标服务器后执行sha256sum-c dm8-offline-amd64.tar.sha256 docker load-i dm8-offline-amd64.tar docker imagelsdm8后续 DM8 正式容器的创建、端口映射、数据卷和日常运维请使用《Docker 部署 DM8》文章中的步骤。七、常见问题1. 对 ISO 执行docker load报错.iso是 DM8 安装介质不是 Docker 镜像归档。正确流程是提取DMInstall.bin使用 Dockerfile 构建dm8:local-amd64再对该镜像执行docker save。2. 构建时报exec format error通常是 CPU 架构不一致。本文只适用于amd64/x86_64主机与下载中心的 X86 安装包。先执行uname-m输出应为x86_64。若是aarch64或arm64必须下载 ARM 版本安装包并使用相应的 ARM 基础镜像。3.DMInstall.bin无法执行确认下载的是Ubuntu22的 Linux X86 包且 Dockerfile 中保留了chmod 0755 DMInstall.bin如果安装程序提示缺少动态库应先检查所选安装包和ubuntu:22.04是否匹配不要改用 Windows、RHEL 或 ARM 安装包混合构建。4. 构建时报LANGUAGE相关错误静默安装配置中的LANGUAGE只能使用ZH中文或EN英文不能使用CHS。对本教程的默认ubuntu:22.04基础镜像应使用ENLANGUAGEEN/LANGUAGE若报The value of LANGUAGE is error说明值不是ZH或EN。若报The language of current OS is not chinese说明在非中文 OS 中选择了ZH改用EN或先在基础镜像中完整配置中文语言环境后再使用ZH。安装程序因上述任一配置解析失败都会退出Docker 构建通常显示为DMInstall.bin -q步骤失败并返回exit code: 252。5. 重启容器后初始化参数没有变化入口脚本只在数据卷为空时执行dminit。数据库已创建后PAGE_SIZE、字符集、数据库名和大小写敏感等初始化参数不会因重新运行容器而改变。这是为了防止覆盖已有数据。6. 不要把镜像当成数据库备份镜像只包含 DM8 软件和启动脚本不包含 Docker 数据卷中的业务数据。生产数据应使用 DM8 的备份恢复机制处理并定期验证可恢复性。

相关新闻

四大工业极端工况 TDLAS 光学系统工程化设计方案

四大工业极端工况 TDLAS 光学系统工程化设计方案

工业场景里高温腐蚀、持续震动、远距离巡检、狭小柜体四大环境,会对 TDLAS 光学硬件提出完全不同的设计要求,通用标准化光路很难长期稳定运行。结合国内全链路厂商江苏旭海光电落地的标准化工程方案,分场景拆解配套光学硬件设计逻辑与成套落地…

2026/7/31 11:56:13阅读更多 →
Android内存泄漏检测与性能优化实战指南

Android内存泄漏检测与性能优化实战指南

1. Android Profiler工具深度解析在移动应用开发领域,性能优化始终是开发者面临的核心挑战之一。Android Studio自2017年引入的Profiler套件,已经成为我们日常开发中不可或缺的性能诊断工具。这套工具集成了CPU、内存、网络和能耗四大分析模块&#xff0…

2026/7/31 11:56:13阅读更多 →
动态数码管显示:从硬件驱动到软件扫描的实战指南

动态数码管显示:从硬件驱动到软件扫描的实战指南

1. 从“亮起来”到“动起来”:数码管显示的本质跃迁 搞嵌入式开发或者电子DIY的朋友,对数码管肯定不陌生。那个由七段(或八段,加小数点)LED组成的家伙,是我们显示数字、部分字母最经典、最直观的载体。一开…

2026/7/31 11:54:13阅读更多 →
2024性能测试实战指南:从核心指标到场景设计的全链路解析

2024性能测试实战指南:从核心指标到场景设计的全链路解析

1. 项目概述:为什么性能测试指标与场景是2024年的核心议题 最近在带团队做几个大型项目的性能压测,发现一个挺有意思的现象:很多新入行的测试工程师,甚至一些有几年经验的,一提到性能测试,脑子里蹦出来的还…

2026/7/31 13:14:44阅读更多 →
如何在普通电脑上安装macOS:国光OpenCore黑苹果完整教程

如何在普通电脑上安装macOS:国光OpenCore黑苹果完整教程

如何在普通电脑上安装macOS:国光OpenCore黑苹果完整教程 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 想要在普通PC上体验macOS的流畅与优雅吗&#xff…

2026/7/31 13:14:44阅读更多 →
vendor aidl服务selinux配置经验整理

vendor aidl服务selinux配置经验整理

1. 什么是安全上下文: 安全上下文(Context)是Selinux在每个进程以及系统资源上设置的安全标签,因此,SElinux上下文也可以被称为SElinux标签,是进程以及资源在SElinux环境中的身份标识2. 安全上下文中包含哪…

2026/7/31 13:14:44阅读更多 →
论文降AIGC工具对比:千笔助手与云笔AI深度测评

论文降AIGC工具对比:千笔助手与云笔AI深度测评

1. 论文写作降AIGC工具现状解析 最近在学术圈里,关于论文写作辅助工具的使用争议愈演愈烈。特别是随着AI生成内容(AIGC)技术的普及,如何确保学术作品的原创性成为每个研究者必须面对的课题。我作为长期从事科研写作的过来人&#…

2026/7/31 13:14:44阅读更多 →
GetQzonehistory技术指南:Python实现QQ空间历史数据完整导出方案

GetQzonehistory技术指南:Python实现QQ空间历史数据完整导出方案

GetQzonehistory技术指南:Python实现QQ空间历史数据完整导出方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 当你在QQ空间留下数千条说说后,却发现平台只展示…

2026/7/31 13:14:43阅读更多 →
BOLIDE项目部署与优化:从环境配置到生产实践指南

BOLIDE项目部署与优化:从环境配置到生产实践指南

1. 先搞清楚 BOLIDE 到底是什么,能解决什么问题BOLIDE 这个名称看起来像是一个缩写或代号,在技术领域通常指向某个特定的工具、框架、模型或系统。从命名风格来看,它可能是一个专注于高性能计算、数据处理或特定领域任务的项目。在没有详细项…

2026/7/31 13:12:42阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/31 0:49:33阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/31 5:08:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →