導入/導出命令介紹
導入/導出的功能主要用於Docker
鏡像的導入導出,用於遷移、備份、升級等場景,或者為隔離且沒有私有鏡像倉庫環境添加docker鏡像。
導入/導出的命令主要有下面幾個:export
、import
、save
、load
,可以分為2組:
- save和load
- export和import
下面分別看看他們的用法和區別
save和load
命令用法
sian@ -> ~/manifests$ docker save --help
Usage: docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
-o, --output string Write to a file, instead of STDOUT
sian@ -> ~/manifests$ docker load --help
Usage: docker load [OPTIONS]
Load an image from a tar archive or STDIN
Options:
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
導出時使用-o
或者輸出重定向>
將本地鏡像倉庫中的鏡像輸出保存到文件中。
導入時使用-i
或者輸入重定向<
將鏡像文件導入到本地鏡像倉庫。
實例展示
### 輸出
docker save -o nginx.tar nginx:latest
或
docker save > nginx.tar nginx:latest
### 輸入
docker load -i nginx.tar
或
docker load < nginx.tar
export和import
命令用法
sian@ -> ~/manifests$ docker import --help
Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Import the contents from a tarball to create a filesystem image
Options:
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Set commit message for imported image
sian@ -> ~/manifests$ docker export --help
Usage: docker export [OPTIONS] CONTAINER
Export a container's filesystem as a tar archive
Options:
-o, --output string Write to a file, instead of STDOUT
實例展示
### export
docker export -o nginx-test.tar nginx-test
### import
docker import nginx-test.tar nginx:imp
或
cat nginx-test.tar | docker import - nginx:imp
兩組命令區別
- export 命令導出的 tar 文件略小於 save 命令導出的
- export 命令是從容器(container)中導出 tar 文件,而 save 命令則是從鏡像(images)中導出
- export 導出的文件再 import 回去時,無法保留鏡像所有歷史(即每一層layer信息,不熟悉的可以去看Dockerfile),不能進行回滾操作;而save是依據鏡像來的,所以導入時可以完整保留下每一層layer信息。
最佳實踐
可以依據具體使用場景來選擇命令
- 若是只想備份images,使用save、load即可
- 若是在啟動容器后,容器內容有變化,需要備份,則使用export、import