有两种方法,一种是通过容器,一种是通过镜像,其实本质是一样的,容器的实质就是镜像
方法一:通过容器
1 首先使用docker ps -a
查看本机上的所有容器
1 | docker ps -a |
2 导出镜像
使用 docker export
命令根据容器 id 将镜像导成一个文件
1 | docker export 容器id > image.tar |
上面命令执行之后,我们便可以通过 ls 命令在当前目录下发现 image.tar
3 导入镜像
使用 docker import
命令将这个镜像导进来
1 | docker import 容器名 < image.tar |
通过 docker images
命令查看镜像是否导入
1 | docker images |
方法二:通过镜像
1 通过 docker image
查看本机上的所有镜像
1 | docker images |
2 找到要上传的镜像的 id, 使用 docker save
命令将镜像保存为一个文件
1 | docker save 镜像id > image.tar |
docker save
可以将多个 image 打包成一个文件
1 | docker save -o image.tar 镜像1 镜像2 |
3 通过 docker load 载入镜像
1 | docker load < image.tar |
镜像改名字
使用docker load -i
命令之后,镜像的名字和标签都是none,这个问题的根本在于这个镜像压缩包在打包的时候操作不当所导致
例如,使用镜像ID打包的话导致解压的出来的镜像没有名字
因此,推荐使用镜像的名字进行打包,例如:
1 | docker save -o redis.tar redis:5.0.2 |
最佳实践
1 | 导出镜像到本地 |