Docker之导出容器export与导入容器import
导出容器
我们可以使用docker export CONTAINER命令导出一个容器到文件,不管此时该容器是否处于运行中的状态。导出容器前我们先进入容器,创建一个文件,过程如下。
首先创建容器busybox2,(注意:不加-it选项的话,容器会立刻停止)
docker run -itd --name=busybox2 busybox
进入容器创建文件
docker exec -it busybox2 sh
cd /tmp && touch test
使用Ctrl+D退出容器终端后,在命令行执行导出命令
docker export -o busybox2.tar busybox2
执行以上命令后会在当前文件夹下生成 busybox2.tar 文件,我们可以将该文件拷贝到其他机器上,通过导入命令实现容器的迁移。
导入容器
通过docker export命令导出的文件,可以使用docker import命令导入,执行完docker import后会变为本地镜像,最后再使用docker run命令启动该镜像,这样我们就实现了容器的迁移。
导入容器的命令格式为 docker import [OPTIONS] file|URL [REPOSITORY[:TAG]]。接下来我们一步步将上一步导出的镜像文件导入到其他机器的 Docker 中并启动它。
首先,使用docker import命令导入上一步导出的容器
docker import busybox2.tar busybox2:test
此时,busybox.tar 被导入成为新的镜像,镜像名称为 busybox:test 。下面,我们使用docker run命令启动并进入容器,查看上一步创建的临时文件
docker run -it busybox2:test sh
/ # ls /tmp/
test
可以看到我们之前在 /tmp 目录下创建的 test 文件也被迁移过来了。这样我们就通过docker export和docker import命令配合实现了容器的迁移。
补充
load 和 save 是搭配使用的,主要用来直接操作镜像,而 import 是和 export 搭配使用的,主要是用来操作容器的。具体可以参考这里 https://www.cnblogs.com/Cherry-Linux/p/8025777.html
docker save :将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。
docker export :将一个容器导出为文件,再使用docker import 命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。
本文源自:拉勾教育课程:由浅入深吃透 Docker,讲师:郭少 前 360 高级容器技术专家