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导出容器 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创建镜像 有错误帮忙指出