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:03 阅读更多 →
Android内存泄漏检测与性能优化实战指南

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

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

2026/7/31 11:56:03 阅读更多 →
电赛视觉追踪系统实战:从OpenCV到卡尔曼滤波的完整构建指南

电赛视觉追踪系统实战:从OpenCV到卡尔曼滤波的完整构建指南

1. 从“看见”到“锁定”:一个电赛视觉系统的诞生记 又到了一年一度电赛备赛的焦灼期,看到不少同学在搜索“2023年电赛E题(运动目标控制与自动追踪系统)——视觉部分以及总结”这个标题。我猜,你大概率是刚接触电赛视觉…

2026/7/31 11:55:03 阅读更多 →

最新新闻

HEIF格式兼容性解决方案:Windows平台HEIC图片处理实践指南

HEIF格式兼容性解决方案:Windows平台HEIC图片处理实践指南

HEIF格式兼容性解决方案:Windows平台HEIC图片处理实践指南 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 问题场景:跨平台图像格式的兼容…

2026/7/31 12:39:17 阅读更多 →
深度解析:大模型推理速度“N tokens/s”背后的用户体验真相

深度解析:大模型推理速度“N tokens/s”背后的用户体验真相

🌊 大家好,我是 在水一缸(博客「在水芬芳」)。专注 AI 大模型与前沿科技深度解析,习惯从工程师视角拆解技术热点——从大模型编码能力评测、RAG 与 Agent 工程化,到开源生态与数字主权之争。 📚…

2026/7/31 12:39:17 阅读更多 →
告别电脑噪音与过热:Fan Control终极Windows风扇控制指南

告别电脑噪音与过热:Fan Control终极Windows风扇控制指南

告别电脑噪音与过热:Fan Control终极Windows风扇控制指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending…

2026/7/31 12:39:17 阅读更多 →
AI做简历模板卖钱:从零到月赚5位数的5步闭环流程(含平台选型、定价策略、版权避坑)

AI做简历模板卖钱:从零到月赚5位数的5步闭环流程(含平台选型、定价策略、版权避坑)

更多请点击: https://codechina.net 第一章:AI做简历模板卖钱 AI正在悄然重构求职市场的底层逻辑——当传统简历制作工具还在比拼排版美观度时,新一代AI驱动的简历生成服务已转向“结果导向”:精准匹配岗位JD、动态优化关键词、A…

2026/7/31 12:39:17 阅读更多 →
Arduino中读取DS18B20温度传感器和温度超限报警提示并在TM1637数码管显示

Arduino中读取DS18B20温度传感器和温度超限报警提示并在TM1637数码管显示

目录 一、所需库文件 二、硬件连接 三、完整程序代码 四、测试 1、数码管显示温度 2、串口中显示温度 五、温度超限报警指示 1、温度超限报警实现 2、完整的程序如下 3、实际测试 (1)温度低于24摄氏度 (2)温度超过24摄…

2026/7/31 12:39:17 阅读更多 →
2026年渝北区口碑好的牙齿矫正医疗机构深度调研与推荐

2026年渝北区口碑好的牙齿矫正医疗机构深度调研与推荐

一、开头:技术痛点/趋势引入2026年,随着人们对口腔健康和美观关注度的不断提升,牙齿矫正领域迎来了新的发展机遇,但同时也面临着诸多挑战。在技术社区里,经常能看到大家的讨论:牙齿矫正到底该如何进行架构选…

2026/7/31 12:38:17 阅读更多 →

日新闻

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

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

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

2026/7/31 0:00:34 阅读更多 →
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:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

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

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

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻