欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker 镜像与容器的导入导出操作实践

程序员文章站 2022-04-21 15:47:22
...

一、背景
公司有一台测试服务器,网速比较慢,特别是下载一些国外站点镜像的时候,而我本机则比较快,还有*,所以在思考一个问题;是否能在我本地把镜像下载下来,然后复制到测试服务器中。

二、思路
我一开始想的是把镜像文件直接拷贝到测试服务器对应的目录,不过在查找相关资料发现docker本身就提供了导入和导出的功能,因此到这个过程到简单了,docker导出和导入的功能中也分了镜像与容器的概念。

2.1 容器
导出容器的命令:
 

#docker export 容器id/容器名 >容器快照名
docker export nginx > /docker/nginx.tar

导入容器的命令:

docker import - 备份地址文件名

2.2 镜像
保存镜像命令:

docker save 9610cfc68e8d > /home/mycentos-save.tar



加载镜像命令:

docker import - /home/mycentos-export.tar



三、实际过程
我的操作过程是使用镜像来导出导入,因为这个镜像是用于linux下的检测,而我的电脑是mac系统,因此根本无法运行这个容器;

这里顺带提一下导出镜像与导出容器的区别,如果是导出容器,是不会导出这个镜像之前的层信息的,也就是说无法回滚,而导出镜像他的信息更加完整,还可以通过命令 (docker images –tree) 进行查看。

3.1 查看本地镜像

docker images

3.2 保存镜像为文件
输入下面的命令将保存镜像到文件,第三个参数为镜像ID,后面的路径为我们要保存的位置。

docker save 3082fb6ef716 >  ~/dockerFile/node-exporter.tar


当docker执行完成之后,我们可以通过命令来查看是否保存成功,如下命令

cd ~/dockerFile && ls -al


可以看到,我们文件夹下一句存在导出的镜像

total 47520
drwxr-xr-x   3 song  staff       102  8 10 11:00 .
drwxr-xr-x+ 39 song  staff      1326  8 10 11:00 ..
-rw-r--r--   1 song  staff  24327680  8 10 10:24 node-exporter.tar



3.3 复制文件到服务器
可以通过SCP命令复制镜像到测试服务器

scp ~/dockerFile/node-exporter.tar [email protected]:/home/tangqingsong/


复制完成之后,在登陆服务器中进行查看是否成功,命令

ls -al node-exporter.tar


如果能看到以下文件信息,则代表复制成功

-rw-r--r-- 1 tangqingsong tangqingsong 24327680 8月  10 10:24 node-exporter.tar



3.4 服务器导入镜像
docker导入镜像命令

docker load < /home/tangqingsong/node-exporter.tar


导入镜像过程中的输出信息

ad68498f8d86: Loading layer [==================================================>]  4.628MB/4.628MB
ad8512dce2a7: Loading layer [==================================================>]  2.781MB/2.781MB
cc1adb06ef21: Loading layer [==================================================>]   16.9MB/16.9MB
Loaded image ID: sha256:3082fb6ef716808294633b41e3ab10f182505c4d1d70c758a443ba75fb2ef8f1



3.5 查看导入结果
查看docker的镜像列表

docker images


从镜像列表中可以看到我刚才导入的文件已经存在了镜像列表中