当前位置: 首页 > ds >正文

docker 镜像完整生成指南

docker 镜像完整生成指南

1. 生成镜像
▶ 方法一:通过 docker commit 生成(适合临时修改)

# 1. 启动基础容器
docker run -it --name=cpp-dev ubuntu:18.04 /bin/bash# 2. 在容器内安装环境(示例)
apt update && apt install -y \build-essential \cmake \git \wget# 3. 安装 Boost 1.88
wget https://boostorg.jfrog.io/artifactory/main/release/1.88.0/source/boost_1_88_0.tar.gz
tar -xzf boost_1_88_0.tar.gz
cd boost_1_88_0
./bootstrap.sh && ./b2 install# 4. 退出容器并提交为镜像
exit
docker commit cpp-dev ubuntu18.04-boost1.88-cmake3.27-git:1.0

▶ 方法二:通过 Dockerfile 生成(推荐,可复现)

# Dockerfile 内容
FROM ubuntu:18.04
RUN apt update && apt install -y build-essential cmake git wget
RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.88.0/source/boost_1_88_0.tar.gz && \tar -xzf boost_1_88_0.tar.gz && \cd boost_1_88_0 && \./bootstrap.sh && ./b2 install
# 构建镜像
docker build -t ubuntu18.04-boost1.88-cmake3.27-git:1.0 .

2. 验证镜像

# 查看镜像列表
docker images# 测试运行
docker run -it ubuntu18.04-boost1.88-cmake3.27-git:1.0 /bin/bash
boost_version=$(grep "BOOST_VERSION" /usr/local/include/boost/version.hpp | awk '{print $3}')
echo "Boost version: $((boost_version/100000)).$((boost_version/100%1000)).$((boost_version%100))"

3. 打包镜像

# 打包为 .tar 文件
docker save -o ubuntu-dev-env_1.0.tar ubuntu18.04-boost1.88-cmake3.27-git:1.0# (可选)压缩文件
gzip ubuntu-dev-env_1.0.tar

4. 共享镜像
▶ 方式一:直接发送文件

scp ubuntu-dev-env_1.0.tar.gz user@remote:/path/

▶ 方式二:上传到镜像仓库

# 登录 Docker Hub
docker login# 标记镜像
docker tag ubuntu18.04-boost1.88-cmake3.27-git:1.0 yourusername/dev-env:1.0# 推送镜像
docker push yourusername/dev-env:1.0

5. 对方如何使用
▶ 从 .tar 文件加载

docker load -i ubuntu-dev-env_1.0.tar

▶ 从仓库拉取

docker pull yourusername/dev-env:1.0

6. 完整流程图示

docker commit
Dockerfile
启动基础容器
安装环境
生成方式
提交为镜像
构建镜像
验证镜像
打包为.tar
共享文件/上传仓库
对方加载使用

7. 注意事项

  1. 空间要求:
    • 基础镜像 (~60MB) + Boost (~1GB) ≈ 最终镜像 1.1GB+

  2. 版本控制:
    • 每次环境变更建议升级标签(如 :1.0:1.1

  3. 安全建议:
    • 删除容器内的临时文件(如 boost_1_88_0.tar.gz

    • 使用 docker scan 检查镜像漏洞


8. 文档更新记录

版本日期修改内容
v1.12024-06-05增加 Dockerfile 生成方法
v1.02024-06-04初始版本
http://www.xdnf.cn/news/8840.html

相关文章:

  • ResponseBodyEmitter与SseEmitter使用
  • MyBatis实战指南(二)如何实现小鸟图标与导入Teacher数据库表实战
  • 《深入剖析:Python自动化测试框架之unittest与pytest》
  • 微服务——网关
  • TypeScript
  • OpenCV 第7课 图像处理之平滑(一)
  • Flink流水线集成Gravitino
  • 微软Build 2025五大AI发布
  • 人工智能数学基础实验(五):牛顿优化法-电动汽车充电站选址优化
  • 基于微信小程序的漫展系统的设计与实现
  • 研报精读:数据要素市场培育及企业数据资源会计处理实证研究【附全文阅读】
  • 基于opencv的全景图像拼接
  • 【ExcelVBA 】类模块学习从入门到放弃
  • 数据仓库中的业务域与数据域
  • 关于PHP的详细介绍,结合其核心特点、应用场景及2025年的技术发展趋势,以清晰的结构呈现:
  • 用HTML5实现实时ASCII艺术摄像头
  • git子模块--常见操作
  • HarmonyOS NEXT 技术特性:分布式软总线技术架构
  • OpenLayers 加载全屏显示控件
  • 【Fargo】razor框架调用mediasoup的发送和接收能力
  • FFT Shift
  • 双目视野高精度拼接
  • PCB设计教程【入门篇】——PCB设计基础-PCB构成与组成
  • DeepONet深度解析:原理、架构与实现
  • python+vlisp实现对多段线范围内土方体积的计算
  • 连接表、视图和存储过程
  • JDK21深度解密 Day 3:模式匹配全解析
  • pvlib(太阳轨迹)
  • nginx的一些配置的意思
  • 攻防世界RE-666