Docker 本地导入导出
本文最后更新于:2024年3月18日 凌晨
Docker 本地导入导出
概述
docker save保存的是镜像(image),docker export保存的是容器(container)
docker load用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像。
docker export导出的是一个容器的快照,不是镜像本身,也就是说没 layer,dockerfile 里的workdir,entrypoint之类的所有东西都会丢失,commit过的话也会丢失。
docker export快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而docker save镜像存储文件将保存完整记录,体积也更大。
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
命令
export
- 将文件系统作为一个tar归档文件导出到STDOUT
1
| $ docker export [OPTIONS] CONTAINER
|
- -o:将输入内容写到文件。
- 将id为a404c6c174a2的容器按日期保存为tar文件。
实例
1 2 3 4
| $ docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2
$ ls mysql-`date +%Y%m%d`.tar mysql-20160711.tar
|
import
1
| $ docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
|
- -c:应用docker 指令创建镜像;
- -m:提交时的说明文字。
实例
- 从镜像归档文件
my_ubuntu_v3.tar创建镜像,命名为test/ubuntu:v4
1 2 3 4 5 6
| $ docker import my_ubuntu_v3.tar test/ubuntu:v4 sha256:63ce4a6d6bc3fabb95dbd6c561404a309b7bdfc4e21c1d59fe9fe4299cbfea39
$ docker images test/ubuntu:v4 REPOSITORY TAG IMAGE ID CREATED SIZE test/ubuntu v4 63ce4a6d6bc3 20 seconds ago 142.1 MB
|
save
1
| $ docker save [OPTIONS] IMAGE [IMAGE...]
|
实例
- 将镜像
test/ubuntu:v3 生成 my_ubuntu_v3.tar 文档。
1 2 3 4
| $ docker save -o my_ubuntu_v3.tar test/ubuntu:v3
$ ll my_ubuntu_v3.tar -rw------- 1 test test 142102016 Jul 11 01:37 my_ubuntu_v3.ta
|
load
- –input , -i:指定导入的文件,代替 STDIN
- –quiet , -q:精简输出信息。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE
$ docker load < busybox.tar.gz Loaded image: busybox:latest
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB
$ docker load --input fedora.tar Loaded image: fedora:rawhide Loaded image: fedora:20
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB fedora rawhide 0d20aec6529d 7 weeks ago 387 MB fedora 20 58394af37342 7 weeks ago 385.5 MB fedora heisenbug 58394af37342 7 weeks ago 385.5 MBs fedora latest 58394af37342 7 weeks ago 385.5 MB
|