title: Docker命令解读(五)
date: 2015-11-23 19:48:07
tags: docker
categories: Docker Commands
Docker命令解读系列文章将系统讲解Docker使用的命令,方便大家学习Docker的基本操作。在写这个系列文章的时候,主要参考了Docker官方的文档,有些内容是直接的翻译。原文档地址 Docker Docs
转载请注明出处
本篇的命令涉及镜像的备份,迁移,导入和导出,主要有下面几个命令:
* import
* export
* save
* load
* save
和export
的差异
import
Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Create an empty filesystem image and import the contents of the
tarball (.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz) into it, then
optionally tag it.
-c, --change=[] Apply Dockerfile instruction to the created image
--help=false Print usage
-m, --message= Set commit message for imported image
import
的功能是从容器快照导入为镜像。容器快照通常是一个本地的或通过URL指定的文件,也可以使用-
选项从STDIN
读入一个文件。
如果指定的是一个压缩文件,Docker
会将其解压,解压的目录相对于/
根目录,如果指定的是一个单独的文件,必须指定它在宿主机上的完整路径。
导入时可以指定容器的名称[REPOSITORY]
和标签[TAG]
。
--change
标识用于向导入的镜像添加Dockerfile
指令,支持的Dockerfile
指令有:
CMD
,ENTRYPOINT
,ENV
,EXPOSE
,ONBUILD
,USER
,VOLUME
,WORKDIR
--message
用于在导入镜像的时候为镜像添加从commit信息
举例:
从URL导入:
$ docker import http://example.com/exampleimage.tgz
从STDIN
导入:
$ cat exampleimage.tgz | docker import - exampleimagelocal:new
导入时添加--message
:
$ cat exampleimage.tgz | docker import --message "New image imported from tarball" - exampleimagelocal:new
export
Usage: docker export [OPTIONS] CONTAINER
Export a container's filesystem as a tar archive
--help=false Print usage
-o, --output= Write to a file, instead of STDOUT
将容器的文件系统到处为压缩文件。
docker export
命令不会导出容器挂载的卷volumes
中的文件。
举例:
$ docker export red_panda > latest.tar
或者:
$ docker export --output="latest.tar" red_panda
save
Usage: docker save [OPTIONS] IMAGE [IMAGE...]
Save an image(s) to a tar archive (streamed to STDOUT by default)
--help=false Print usage
-o, --output="" Write to a file, instead of STDOUT
save
操作的对象是镜像而不是容器(export
命令的操作对象是容器),他会将一个镜像和其所有层包括tag信息都打包成一个tar。
save
命令通常用来备份backup
一个镜像之后用load
命令将其载入到另一个主机中。
举例:
$ docker save busybox > busybox.tar
甚至,使用save
命令可以将多个不同标签的镜像打包成一个文件。
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy
load
Usage: docker load [OPTIONS]
Load an image from a tar archive or STDIN
--help=false Print usage
-i, --input="" Read from a tar archive file, instead of STDIN.
The tarball may be compressed with gzip, bzip, or xz
load
命令用于像Docker
添加镜像,默认是从STDIN
读入经save
输出的文件,格式为:
$ docker load < image.tar
也可以使用-i
或--input
标识指定一个tar
文件而不是从STDIN
读取。例如:
$ docker load --input fedora.tar
`export`和`save`之间的差异
<还没研究透,研究透回来再写>
首先,export
操作的对象是容器,而save
操作的是镜像。