#以busybox镜像创建一个容器,在容器中创建一个hello.txt的文件。
#拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull busybox
docker run --name container1 busybox touch hello.txt
#将对容器container1做出的修改提交为一个新镜像,镜像名为busybox:v1
#********** Begin *********#
docker commit container1 busybox:v1
#********** End **********#
Docker
提供了镜像备份和恢复的手段,这一节,我们将使用docker load
和docker save
命令,实现镜像备份和修复。
将镜像保存到tar包
docker save
用来将一个或者多个镜像保存为一个tar
文件,默认标准输出流的方式输出,它的具体语法如下:
docker save [OPTIONS] IMAGE [IMAGE...]
其中:
-
docker save
:Docker
将镜像保存到tar
包的命令关键词; -
OPTIIONS
:命令选项,-o
指定写到一个文件中,而不是标准输出流中; -
IMAGE
: 需要保存到tar
包的镜像,可以指定多个,用空格隔开。
例如,将alpine:latest
镜像保存到tar
包,对应的语句如下:
docker save alpine:latest > alpine.tar
或者
docker save -o alpine:lateste alpine.tar
如果想要将多个镜像保存到tar
包,例如将alpine:latest
和ubuntu:latest
保存到tar
包,对应的语句如下:
docker save alpine:latest ubuntu:latest > image.tar
从tar包加载镜像
docker load
使用docker save
保存的tar
文件加载镜像,它的具体语法如下:
docker load [OPTIONS]
其中:
-
docker load
:Docker
从tar
包加载镜像的命令关键词; -
OPTIIONS
: 命令选项,-i
指定从一个tar
文件中读取,而不是标准输入流中。
例如,从alpine.tar
中加载镜像,对应的语句如下:
docker load < alpine.tar
或者
docker load -i alpine.tar
如果一个tar
包中包含多个镜像,那么会将这些镜像全部到加载进来。
实例
假设想要将本机的alpine
镜像传到另一台机器,首先,在本机执行docker save alpine > alpine-latest.tar
将alpine
镜像保存成一个tar
文件。
[root@localhost dir1]# docker save alpine > alpine-latest.tar
[root@localhost dir1]# ls
alpine-latest.tar
然后我们将alpine-latest.tar
文件复制到了到了另一个机器上,然后在该机器上执行docker load < alpine-latest.tar
,这样就可以使用tar
包将镜像加载进来了。如下图所示,可以通过docker images alpine
查看到alpine:latest
镜像。
[root@localhost tempdir]# docker load < alpine-latest.tar
5bef08742407: Loading layer 4.221 MB/4.221 MB
Loaded image: alpine:latest
[root@localhost tempdir]#docker images alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 7328f6f8b418 5 weeks ago 3.96 MB
如果我们结合这两个命令以及ssh
甚至pv
的话,利用 Linux
强大的管道,我们可以写一个命令完成从一个机器将镜像迁移到另一个机器,并且带进度条的功能: docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker load'
#!/bin/bash
#首先拉取一个busybox镜像
docker pull busybox:latest
#1.将busybox:latest镜像保存到tar包
#********** Begin *********#
docker save busybox:latest > busybox.tar
#********** End **********#文章来源地址https://www.toymoban.com/news/detail-760513.html
#删除busybox:latest镜像
docker rmi busybox:latest
#2.从tar包加载busybox:latest镜像
#********** Begin *********#
docker load < busybox.tar文章来源:https://www.toymoban.com/news/detail-760513.html
#********** End **********#
到了这里,关于docker基于save保存镜像与基于load加载镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!