前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker学习笔记之docker-save vs docker-export vs docker-commit

Docker学习笔记之docker-save vs docker-export vs docker-commit

作者头像
Jetpropelledsnake21
发布2019-03-19 11:03:10
1.6K1
发布2019-03-19 11:03:10
举报
文章被收录于专栏:JetpropelledSnakeJetpropelledSnake

之前对这几个command是忘了记,记了混~所以写下笔记以巩固之。

1.docker save

代码语言:javascript
复制
docker save -h

Usage:  docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

  --help             Print usage
  -o, --output       Write to a file, instead of STDOUT

从接的参数就可以猜到,直接接image,不太可能导出单纯的文件系统(因为镜像本身就是分层存储的)

简单测试一下

代码语言:javascript
复制
docker save -o busybox.tar busybox && mkdir busybox && tar xf busybox.tar -C busybox
tree busybox
busybox
├── 2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749.json
├── 374004614a75c2c4afd41a3050b5217e282155eb1eb7b4ce8f22aa9f4b17ee57
│   ├── VERSION
│   ├── json
│   └── layer.tar
├── manifest.json
└── repositories

docker load 与之匹配,将其(带历史地)导入到docker images中

代码语言:javascript
复制
docker load -i busybox.tar

2.docker export

代码语言:javascript
复制
docker export -h
Usage:  docker export [OPTIONS] CONTAINER

Export a container's filesystem as a tar archive

  --help             Print usage
  -o, --output       Write to a file, instead of STDOUT

从接的参数猜测,直接接container,多半就是dump rootfs了

栗子测试一下:

代码语言:javascript
复制
docker run --name container -d busybox
docker export -o busybox.tar container && mkdir busybox && tar xf busybox.tar -C busybox
tree busybox -L 1
busybox
├── bin
├── dev
├── etc
├── home
├── proc
├── root
├── sys
├── tmp
├── usr
└── var

docker import 与之匹配

代码语言:javascript
复制
docker import busybox.tar my-busybox:1.0
docker images
# REPOSITORY     TAG    IMAGE ID            CREATED             SIZE
# my-busybox     1.0   5bfea374dd5c        3 seconds ago       1.093 MB

注意:docker import后面接的是docker export导出的文件,也就是一个文件系统,所以导入的镜像是不带历史的 使用docker history $image_name 查看镜像,只有一层

3.docker commit

代码语言:javascript
复制
docker commit -h       /tmp/pkg_debian (debian) choldrim-pc

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes

  -a, --author        Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change=[]     Apply Dockerfile instruction to the created image
  --help              Print usage
  -m, --message       Commit message
  -p, --pause=true    Pause container during commit

commit是合并了save、load、export、import这几个特性的一个综合性的命令,它主要做了:

  • 将container当前的读写层保存下来,保存成一个新层
  • 和镜像的历史层一起合并成一个新的镜像

如果原本的镜像有3层,commit之后就会有4层,最新的一层为从镜像运行到commit之间对文件系统的修改

代码语言:javascript
复制
docker commit container my-commit-image
docker history my-commit-image
IMAGE          CREATED            CREATED BY                                      SIZE       COMMENT
e86539128c67   5 seconds ago       sh                                              0 B                 
2b8fd9751c4c   9 weeks ago         /bin/sh -c #(nop) CMD ["sh"]                    0 B                 
<missing>      9 weeks ago         /bin/sh -c #(nop) ADD file:9ca60502d646bdd815   1.093 MB

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.docker save
  • 2.docker export
  • 3.docker commit
  • 参考
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档