工作中我们会常常遇到在没有镜像仓库中心的时候,需要将容器放到到另外一个主机上,此时,我们就需要将镜像导出,今天我们就介绍下docker的导出(docker export & docker save)和导入(docker import & docker load)的命令。
docker export & docker import
使用docker export 命令导出的文件相当于是容器的快照,并不保存镜像的层历史和元数据信息,目标类型是容器文件系统,文件导出为TAR文件,该文件只是包含了组成容器状态的文件,而且,正在运行中的状态不会被保存.
比如,现在需要导出主机上的nginx镜像:
docker export -o nginx.tar nginx:myversion #等价于 docker export nginx:myversion > nginx.tar
导入:
#如果不指定对应的nginx:myversion版本和标签信息,导入之后REPOSITORY和TAG会显示为docker import nginx.tar nginx:myversion
docker save & docker load
docker save 则是可以保留镜像的层历史和元数据信息,相应的,导出的镜像文件TAR也会比较大。
使用docker save导出的镜像文件,也可以使用docker import导入,对应的,导入之后将会丢弃容器的历史和元数据信息。如果要保留镜像的历史,可以使用load而不是import,这样其历史也会在另一边的docker守护进程上得到保留。
导出
docker save -o nginx.tar nginx:myversion#等价于docker save -o nginx:myversion > nginx.tar
导入,不指定版本TAG信息,在导入之后也会显示nginx的版本信息。
docker load -i nginx.tar #等价于docker load < nginx.tar