kubernetes实战篇之docker镜像的打包与加载
前面我们讲到了使用nexus搭建docker镜像仓库,操作还是有点复杂的,可能有的童鞋仅仅是想尝试kubernetes功能,并不想在搭建仓库上花费过多时间,但是又想在不同的主机之间传递镜像.其实可以通过docker save
命令来实现,通过docker save把一个镜像保存为tar
格式压缩文件,然后在要使用这个镜像机器上执行docker load
命令来加载这个镜像.
复制文件的方式不方便对文件进行版本管理,大家为了方便测试可以这样玩玩,强烈建议生产环境中不要这么做.
通过docker save保存镜像为文件
docker save命令的格式如下
docker save -o <path for generated tar file> <image name></image>
-
-o或者--output,指定输出文件(tar格式)的位置,这里的位置不仅仅是要输出的目录,还包括要保存的tar文件的名称
-
image name 要保存的镜像的名称
例如,以下命令把alpine:latest镜像保存为名为alpine.tar文件(保存位置为当前目录,也可以通过指定绝对路径把镜像保存到指定位置)
docker save -o alpine.tar alpine:latest
保存为文件以后,我们就可以通过cp,scp,ftp等工具把镜像文件复制到目标电脑上
通过docker load加载保存的tar文件
命令格式如下:
docker load -i <path to image tar file>
-i同--input,指定一个tar文件
我们执行命令docker load -i alpine.tar
就可以在目标机器上加载我们保存的alpine镜像了.
使用docker export/import来打包/加载镜像
使用docker export/import与使用docker save/load用法类似,不同的是docker save是把一个镜像保存为tar文件,而docker export是把一个运行的容器的文件系统的快照保存为压缩文件,通过docker import从导出的文件系统中创建一个镜像
注意,docker import并不是把导出的容器还原,而是从中生成一个镜像.
通过docker import 导入的镜像将丢失所有元数据和历史记录,实际项目中我们并不关心容器的历史记录和元数据,我们关系的是应用程序的正常运行的优化,使用这种方式生成的镜像一定程度上减小了镜像的体积.
- docker export 导出容器为压缩文件
命令格式如下:
docker export -o <path for generated tar file> <container name>
此命令类似于docker save,指定要输出的文件路径和文件名,后面跟上要导出的容器的名称或者id
例如通过docker export -o alpine.tar c054
把一个运行的容器(id开头为c054)导出为文件.
我们可以查看生成的alpine.tar文件,里面其实是一个linux文件系统
- docker import 把导出的文件系统导入为镜像
我们通过命令docker import alpine.tar myalpine
把刚导出的容器文件系统导出为镜像,并且命名为myalpine
注,这里与docker load不同的是这里不需要
-i
来指定input对象,而是直接跟要导入的对象,并且可以给导入的镜像命名.