Docker 镜像与容器的导入导出

背景

前一段时间,公司开始推行云桌面,导致个人使用的 VPS 无法连外网。而内网的 Docker 镜像服务又不给力,经常拉镜像失败。

好在个人电脑是可以正常上外网,所以拉取镜像也是正常的。所以 VPS 上一些以 Docker 容器跑的服务,就只好从个人电脑搬运过去。

镜像导出导入

通常使用 docker savedocker load 命令对导出导入镜像,具体语法和实例:

1
2
3
4
5
6
7
8
9
10
11
# 导出语法
docker save [OPTIONS] IMAGE [IMAGE...]
# 例子,如果需要跨操作系统,请使用 -o 方式
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
docker save runoob/ubuntu:v3 > my_ubuntu_v3.tar

# 导入语法
docker load [OPTIONS]
# 例子,如果需要跨操作系统,请使用 -i 方式
docker load -i ubuntu.tar
docker load < ubuntu.tar

容器导出导入

容器的导入导出常使用的是 docker exportdocker import 命令对,容器导出再导入之后,得到的是镜像,然后使用通用的命令 docker run 即可运行实例。

1
2
3
4
5
6
7
8
9
# 导出语法
docker export [OPTIONS] CONTAINER
# 例子
docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2

# 导入语法
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
# 例子
docker import my_ubuntu_v3.tar runoob/ubuntu:v4

Docker Save 与 Docker Export

  • docker save 保存的是镜像,docker export 保存的是容器
  • docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像
  • docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称

参考资料

  • Docker load and save: “archive/tar: invalid tar header”
  • docker save与docker export的区别
  • Difference between save and export in Docker