详解 docker save 与 docker export 的区别
缘起
>docker versionClient:Version: 17.07.0-ce-rc1API version: 1.31Go version: go1.8.3Git commit: 8c4be39Built: Wed Jul 26 05:19:44 2017OS/Arch: windows/amd64Server:Version: 17.07.0-ce-rc1API version: 1.31 (minimum version 1.12)Go version: go1.8.3Git commit: 8c4be39Built: Wed Jul 26 05:25:01 2017OS/Arch: linux/amd64Experimental: true
docker save
>docker save --helpUsage: docker save [OPTIONS] IMAGE [IMAGE...]Save one or more images to a tar archive (streamed to STDOUT by default)Options:--help Print usage-o, --output string Write to a file, instead of STDOUT
docker save -o images.tar postgres:9.6 mongo:3.4
>docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3623943d369f postgres:9.6 "docker-entrypoint..." 3 hours ago Up 3 hours 5432/tcp postgres>docker save -o b.tar postgres>docker save -o c.tar postgres:9.6>ls -al-rwxrwxrwx 1 root root 277886464 8月 26 14:40 b.tar-rwxrwxrwx 1 root root 277886464 8月 26 14:41 c.tar
docker load -i images.tar
docker export
>docker export --helpUsage: docker export [OPTIONS] CONTAINERExport a container's filesystem as a tar archiveOptions:--help Print usage-o, --output string Write to a file, instead of STDOUT
docker export -o postgres-export.tar postgres
docker import postgres-export.tar postgres:latest
docker save和docker export的区别
docker save保存的是镜像(image),docker export保存的是容器(container);
docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
脑洞
>ls -al-rwxrwxrwx 1 root root 271760384 8月 26 12:15 postgres-export.tar-rwxrwxrwx 1 root root 398292480 8月 26 12:13 postgres-save.tar
>docker load -i postgres-export.taropen /var/lib/docker/tmp/docker-import-082344818/bin/json: no such file or directory
>docker import postgres-save.tar postgressha256:8910feec1ee2fac8c152dbdd0aaab360ba0b833af5c3ad59fcd648b9a24d4838>docker image lsREPOSITORY TAG IMAGE ID CREATED SIZEpostgres latest 8910feec1ee2 2 minutes ago 398MB
>docker run postgresC:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: No command specified.See 'C:\Program Files\Docker\Docker\resources\bin\docker.exe run --help'.
Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]Import the contents from a tarball to create a filesystem imageOptions:-c, --change list Apply Dockerfile instruction to the created image--help Print usage-m, --message string Set commit message for imported image
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]Create a new image from a container's changesOptions: -a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>") -c, --change list Apply Dockerfile instruction to the created image --help Print usage -m, --message string Commit message -p, --pause Pause container during commit (default true)