docker - 容器镜像打包

镜像保存与载入

将镜像打包成 tar 包

# 保存镜像,使用镜像 id 保存,这个操作会丢失版本号和镜像名称(变成 null)
docker save [image_id] -o [filename]

# 保存镜像,个人推荐这么打包
docker save [image]:[tag] -o [image]:[tag].tar
docker save [image]:[tag] gzip -o [image]:[tag].tar.gz

# 示例 :
docker save registry:latest -o registry_latest.tar
# 
docker save registry:latest > registry_latest.tar

# 其中 -o 和 > 表示输出到文件,
# 可以用比较熟悉的代码做测试,比如 tomcat。

加载 tar 包形成镜像


# 加载镜像文件
docker load -i [images.tar]

# 解压并加载镜像
gunzip -c 文件名.tar.gz | docker load

# 批量安装 tar 镜像,会递归子级文件夹
find [path] -name '*.tar.*' -exec docker load -i {} \;
 
# 批量安装 tar 镜像
for i in ./*;do docker load -i $i;done;

# 示例:
docker load -i registry_latest.tar
# 
docker load < nginx.tar

# 其中 -i 和 < 表示从文件输入。

将容器做成镜像

镜像id 新的镜像名字:标签
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。


docker commit [container_id] [image]:[tag]

# 例如
docker commit -a 'author' -m 'msg' 13f26d6e7247 rabbit-mq:v1
docker commit -p 6fd1775e7dd0 postgres-backup1

export 和 import 命令

# 导出容器,注意:export导出的是容器,不是镜像。
docker export [container_id] -o [filename]

# 导入容器为镜像import
cat [filename] |docker import - [image]:[tag]

# 样例:运行镜像,注意结尾这一段 /entrypoint.sh
docker run --name mysql5 -e MYSQL_ROOT_PASSWORD=root  -d -p 3306:3306 mysql:5.6.28 /entrypoint.sh [image]:[tag]

# 注意:运行导入的镜像的时候必须带 command,否则启动报如下错误:
# FATA[0000] Error response from daemon: No command specified
# 具体的 command 需要在导出容器的时候通过docker ps查看到。

export 和 commit 的区别

这两个命令都能备份容器,那么有什么区别呢?
这些信息整理自于网络,没有在生产下实际操作过,目测使用 commit 会比较稳妥。

  1. docker export 不会保存容器的历史记录和元数据。
    这意味着在导出后,容器的镜像层信息将丢失。
    这使得导出的 tar 文件更加紧凑,但也导致了一些功能的损失。
  2. docker commit 用于将对一个容器所做的更改保存为一个新的镜像。
    当您修改容器(例如,安装软件或更改配置)后,镜像中会包含这些修改信息。
    docker commit 会保留容器的历史记录和元数据。

posted on   疯狂的妞妞  阅读(417)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2022-05-20 OpenLayer4——坐标间距计算
2022-05-20 OpenLayer4——定位到坐标位置
2022-05-20 OpenLayer4——地图拉伸导致事件丢失问题
2022-05-20 OpenLayer4——贝塞尔曲线插值算法
2022-05-20 OpenLayer4——多边形遮罩层
2022-05-20 OpenLayer4——获取鼠标点击的坐标
2020-05-20 Security——helloworld
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示