4. 本地镜像的导出和导入
如果远程镜像仓库无法用 docker pull 命令下载 Docker 镜像,我们可以直接从镜像仓库下载镜像包,然后导入到本地系统中。也可以将本地 Docker 内部的镜像导出成为 归档文件。
1. 导出镜像的命令 docker save
命令别名:
docker image save
命令格式
导出成为 tar 包文件的命令:
docker save <镜像名:标签>
# 或
docker save -o <文件名.tar> <镜像名:标签>
默认导出镜像为标准输出 STDOUT,然后可以通过管道交给 gzip或 xz等命令进行数据压缩。可以使用-o 现象直接导出为 .tar 归档文件。
如果不给出标签,默认导出标签为
latest的镜像。
docker save 命令的常用选项
选项
说明
-o <归档文件路径>将文件导出到指定位置,代替标准输出
STDOUT。示例
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB
weimingze@mzstudio:~$ sudo docker save -o ubuntu24.04.tar ubuntu:24.04 # 导出为 tar 包
weimingze@mzstudio:~$ sudo docker save ubuntu:24.04 | gzip > ubuntu24.04.tar.gz # 导出为 tar.gz 压缩包
weimingze@mzstudio:~$ sudo docker save ubuntu:24.04 | xz > ubuntu24.04.tar.xz # 导出为 tar.xz 压缩包
weimingze@mzstudio:~$ sudo docker save mysql | xz > mysql.tar.xz # 导出 mysql:latest 为 .tar.xz 压缩包
weimingze@mzstudio:~$ ls
mysql.tar.xz ubuntu24.04.tar ubuntu24.04.tar.gz ubuntu24.04.tar.xz
导出为
.xz归档文件时间很长,压缩算法复杂导致。
2. 导入镜像的命令 docker load
命令别名:
docker image load
命令格式
docker load < 归档文件路径
# 或
docker load -i 归档文件路径
归档文件可以是 .tar、.tar.gz、.tar.xz 等格式的镜像包。
docker load 命令的常用选项
选项
说明
-i <归档文件路径>从归档文件中读取数据,代替标准输入
STDIN。示例
weimingze@mzstudio:~$ ls
mysql.tar.xz ubuntu24.04.tar ubuntu24.04.tar.gz ubuntu24.04.tar.xz
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
weimingze@mzstudio:~$ sudo docker load -i ubuntu24.04.tar.xz # 使用.tar.gz镜像包导入镜像
3abdd8a5e7a8: Loading layer [==================================================>] 80.61MB/80.61MB
Loaded image: ubuntu:24.04
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB
weimingze@mzstudio:~$ sudo docker rmi ubuntu:24.04 # 删除镜像(后面会讲)
Untagged: ubuntu:24.04
Deleted: sha256:602eb6fb314b5fafad376a32ab55194e535e533dec6552f82b70d7ac0e554b1c
Deleted: sha256:3abdd8a5e7a8909e1509f1d36dcc8b85a0f95c68a69e6d86c6e9e3c1059d44b3
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
weimingze@mzstudio:~$ sudo docker load < ubuntu24.04.tar # 使用标准输入导入镜像
Loaded image: ubuntu:24.04
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB
weimingze@mzstudio:~$ sudo docker rmi ubuntu:24.04
Untagged: ubuntu:24.04
Deleted: sha256:602eb6fb314b5fafad376a32ab55194e535e533dec6552f82b70d7ac0e554b1c
Deleted: sha256:3abdd8a5e7a8909e1509f1d36dcc8b85a0f95c68a69e6d86c6e9e3c1059d44b3
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
weimingze@mzstudio:~$ sudo docker load < ubuntu24.04.tar.xz
3abdd8a5e7a8: Loading layer [==================================================>] 80.61MB/80.61MB
Loaded image: ubuntu:24.04
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB