制作纯净 Docker 镜像的完整流程|宝塔环境案例

VFX大学 云计算 制作纯净 Docker 镜像的完整流程|宝塔环境案例

标签: 

正在查看 0 条回复
  • 作者
    帖子
    • #269

      追光
      管理员

      以下是一个完整的 制作纯净 Docker 镜像的流程讲解,适合你将现有容器简化、清理、封装为干净、自动启动的镜像,并可跨平台分发使用。


      🧱 制作纯净 Docker 镜像的完整流程

      ✅ 背景说明

      有时你通过反复操作在容器中完成了系统或软件的完整部署(如 LNMP、面板等),但这个容器已含有历史操作、缓存、临时文件、不必要的日志,不适合直接发布或备份

      因此需要将其“脱壳”、清理为一个干净的 Docker 镜像,并注入自动启动逻辑,方便今后复用。


      📦 第 1 步:导出现有容器(剥离运行历史)

      docker export jisongbin-arm-lnmp > jisongbin-arm-panel.tar
      • docker export 会将容器内的整个文件系统导出为 tar 包

      • 注意:这个操作 不会包含容器的元数据(如环境变量、启动命令、端口映射等),也不会包含卷挂载等内容。

      此时你得到的是一个“纯系统”状态的压缩包。


      🔁 第 2 步:导入镜像(生成镜像快照)

      docker import jisongbin-arm-panel.tar jisongbin-arm-panel
      • docker import 将刚才的系统 tar 包导入为 Docker 镜像。

      • 此时你得到了一个干净的镜像,但是没有设置启动命令,直接运行会立即退出。


      ⚙️ 第 3 步:注入启动命令(添加默认入口)

      目的:告诉 Docker 容器应该启动哪个程序,否则运行时无操作会直接退出。

      1. 创建目录并进入:

      mkdir docker-clean-build && cd docker-clean-build

      2. 创建 Dockerfile:

      # Dockerfile
      FROM jisongbin-arm-panel:latest
      CMD ["/bin/bash", "/bt.sh"]
      • FROM:指定你刚才导入的干净镜像。

      • CMD:定义容器启动时执行的默认命令,这里我们假设你有个 /bt.sh 启动脚本。

      3. 构建新镜像:

      docker build -t jisongbin-arm-panel .
      • 这会生成一个新的镜像版本,其中已经内置了启动命令。


      💾 第 4 步:保存镜像为可迁移版本

      docker save jisongbin-arm-panel > jisongbin-arm-panel.tar
      • docker saveexport 不同,它会包含镜像的全部元信息和层结构

      • 最终这个镜像文件可以直接跨设备、跨系统使用并带有自动启动行为。


      🔄 第 5 步:加载镜像并运行

      docker load -i jisongbin-arm-panel.tar
      • docker load 将完整镜像载入本地环境。

      • 随后你可以像正常镜像一样使用:

      docker run -it --name mypanel jisongbin-arm-panel

      🧭 小结

      阶段

      命令

      说明

      1

      docker export

      清理运行历史,导出为干净文件系统

      2

      docker import

      生成基础镜像(无启动命令)

      3

      docker build

      注入启动命令(例如启动 nginx/php 面板)

      4

      docker save

      生成可分发、可重用镜像

      5

      docker load

      载入镜像并运行


      🔒 安全建议

      • /bt.sh 中添加你服务的启动顺序(如 php-fpm, nginx, supervisord 等)。

      • 注意设置合理的容器权限与卷挂载,不要将敏感文件写死在镜像中。


      如需我帮你优化 bt.sh 启动脚本或进一步自动部署到主机,欢迎继续发我。

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。