docker镜像创建的多种方式

docker镜像创建操作

使用docker save/load保存加载镜像

docker save保存镜像

root@DESKTOP-UCCCCAE:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               6.0.5               235592615444        3 weeks ago         104MB
mysql               5.7                 a4fdfd462add        5 weeks ago         448MB
ubuntu              15.10               9b9cb95443b5        3 years ago         137MB
root@DESKTOP-UCCCCAE:~# docker save -o redis.tar redis:6.0.5
root@DESKTOP-UCCCCAE:~#
-o, --output string 写入文件

docker load加载镜像

root@DESKTOP-UCCCCAE:~# docker load -i redis.tar
root@DESKTOP-UCCCCAE:~# docker load < redis.tar

两种方式都行

 -i, --input string   从tar文件读取
 -q, --quiet	压制标准输出
 <	输入重定向		>	输出重定向,覆盖或创建文件	>>	输出重定向,追加或创建

docker export/import导入导出容器

docker export导出容器
save 是从镜像中导出镜像,能保留所有的镜像层,不保存容器启动后的变化内容;
save保存的镜像包含历史镜像层(可以使用docker tag进行层回滚),所以叫保存镜像。
export 是从容器中导出镜像文件,能保存启动容器后的变化内容,但会丢失历史镜像层;
镜像中保存了容器启动后的变化内容,所以也被叫作导出容器。
一句话就是docker export导出了保存容器状态的镜像

root@DESKTOP-UCCCCAE:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
a2bf177b57f9        redis:6.0.5         "docker-entrypoint.s…"   5 days ago          Up 9 hours          0.0.0.0:6379->6379/tcp   redis605
root@DESKTOP-UCCCCAE:~# docker export redis605 -o redis2.tar
root@DESKTOP-UCCCCAE:~#
#					对比docker save redis:6.0.5 -o redis.tar

代码块拖到最右可以看到export是指定容器名redis605,而save是指定镜像名redis:6.0.5;
虽然docker export是以镜像形式导出容器,但从目标的类型来讲,可以被称作导出容器。
docker import导入容器

root@DESKTOP-UCCCCAE:~# cat redis2.tar | docker import - test/redis:v1
sha256:89feb7a1ff3ba1aa77e9dad84afb8e07b9b48e4713aef75047062bc08a6ad5e4
#或docker import redis2.tar redis:v1
root@DESKTOP-UCCCCAE:~#
-c, --change list      对创建的镜像应用DockerFile描述,即添加docker指令
-m, --message string   为镜像设置提交信息(与容器操作相关的信息)
root@DESKTOP-UCCCCAE:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/redis          v1                  89feb7a1ff3b        13 seconds ago      101MB
redis               6.0.5               235592615444        3 weeks ago         104MB
mysql               5.7                 a4fdfd462add        5 weeks ago         448MB
ubuntu              15.10               9b9cb95443b5        3 years ago         137MB

可以看到用docker export导出的镜像比原镜像小了一些,这是因为丢失了历史镜像层。

使用已有的镜像来创建新镜像

docker container commit创建镜像

root@DESKTOP-UCCCCAE:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              15.10               9b9cb95443b5        3 years ago         137MB
root@DESKTOP-UCCCCAE:~# docker run -it ubuntu:15.10
root@7a4c11fd451e:/# touch demo.txt
root@7a4c11fd451e:/# exit
exit
#启动容器后,进入容器创建文件

接下来使用上方容器id(7a4c11fd451e )进行docker container commit操作:

root@DESKTOP-UCCCCAE:~# docker container commit -m "Add a demo.txt file" -a "hjm" 7a4c11fd451e test/ubuntu:v1
sha256:a1776575d1b3391597bcdb4c75fdf7b8531355e201bd34c1af4a669ae5ead9dd
-a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list      Apply Dockerfile instruction to the created image,同import
-m, --message string   Commit message,同docker import处
-p, --pause            提交时暂停容器 (default true)
root@DESKTOP-UCCCCAE:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/ubuntu         v1                  a1776575d1b3        11 seconds ago      137MB

使用DockerFile创建镜像

太长没人看,DockerFile方式创建镜像写在下面链接这一篇:
Dockerfile创建镜像
有错误帮忙指出

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值