一、 Docker导出镜像概述
Docker是一种全新的虚拟化技术,通过Docker,开发者可以将应用程序及其依赖打包成一个镜像。如此一来,开发者在不同环境下只需要运行这个镜像就能够保证这个应用程序可以正常运行。 Docker官方支持的镜像仓库是 Docker Hub,其中保存了众多的镜像供用户下载使用。Docker Hub 中的镜像源都是从Docker Hub公共的镜像中心而来的,用户可以在 Docker Hub 页面或者从命令行中搜索并下载自己所需要的镜像,无需手动编译和配置。
有时候,用户可能需要将自己在Docker中打包的镜像导出到本地,这样可以方便的在本地进行测试、备份、共享等操作。本文主要介绍如何将一个Docker镜像导出到本地。
二、 Docker导出镜像到本地
将Docker镜像从远程服务器上导出到本地,需要使用Docker提供的命令:docker save。Docker save命令的语法如下:
docker save [OPTIONS] IMAGE [IMAGE...]
该命令需要指定镜像的名称和需要导出的文件名称,例如:
docker save busybox:latest -o busybox.tar
上述命令中,busybox:latest是需要导出的镜像的名称,-o 表示镜像的输出路径为 busybox.tar。
Docker save 命令还提供了一些可选参数,例如:
- -o:表示将要输出的镜像文件的名称;
- --output:表示将要输出的镜像文件的名称(与 -o 参数等价);
- --quiet,-q:表示将输出的过程设置为不显示详细信息。
例如:
docker save busybox:latest -o busybox.tar -q
导出的镜像文件保存后,就可以将这个文件通过其他方式移动到其他地方或者服务器上。
三、 Docker导入本地镜像
使用Docker save导出镜像文件后,用户可以将镜像文件导入到本地的Docker仓库中。导入镜像到本地需要使用 Docker load 命令。Docker load 命令的语法如下:
docker load [OPTIONS]
使用 Docker load 命令导入镜像文件,需要使用-i选项指定导入的文件。例如:
docker load -i busybox.tar
在导入的过程中,用户也可以指定一些其他的参数,例如:
- --input, -i:表示输入文件的位置。
- --quiet, -q:表示将输出全面设置为不显示详细信息。
例如:
docker load -i busybox.tar -q
四、 Docker导出镜像到本地的其他方法
除了使用 Docker save 命令将镜像导出到本地之外,还有其他的方法,例如使用 Docker export 或者将镜像存成一个 tar 包的形式。这两种方法的区别在于:Docker export 只导出容器的文件系统,而不包含容器的元数据。
五、 使用 Docker export 导出容器
使用 Docker export 命令可以将一个容器的文件系统导出为一个 tar 文件。Docker export 命令的语法如下:
docker export [OPTIONS] CONTAINER
该命令需要指定容器的名称和需要导出的文件名称,例如:
docker export container_name > container.tar.gz
上述命令中container_name表示需要导出的容器名称,> 表示将导出的文件输出到 container.tar.gz。
需要注意的是,Docker export 命令虽然可以导出容器的文件系统,但是并不包含容器的元数据,例如容器的命令、网络配置、暴露的端口等信息。
六、 将镜像存成 tar 包形式
Docker提供了一个命令docker save可以将镜像打包成一个 tar 包的形式。所以,用户可以使用 Docker save 命令将需要导出到本地的镜像保存为 tar 包文件。导出压缩包的命令示例:
docker save -o busybox_1.tar busybox:1.0.0
上述命令中busybox:1.0.0表示需要打包的镜像名称,-o指定了输出路径为busybox_1.tar。
接下来使用 tar 命令压缩这个 tar 包文件:
tar czvf busybox_1.tar.tgz busybox_1.tar
上述命令中,czvf选项的含义是:
c:创建一个新的 tar 包;
z:通过 gzip 压缩 tar 包;
v:显示压缩和解压缩的进度;
f:将数据写入指定的文件
经过上述步骤完成后,用户就得到了一个可以通过其他方式移动到其他地方或者服务器上的压缩包。
结论
本文主要阐述了 Docker 导出镜像到本地的两种方式——使用 Docker save 命令将镜像保存为 tar 包形式或者使用 Docker export 命令将一个容器的文件系统导出为一个 tar 文件。同时,本文还介绍了如何在本地导入这些导出的文件。