docker中save与load的使用及注意事项

本文介绍了如何使用Docker的save和load命令迁移本地镜像到其他服务器。通过`docker images`查看镜像,以sonarqube和postgres为例,将镜像保存为tar文件,然后通过文件传输工具将文件复制到目标服务器,使用load恢复镜像。注意,使用镜像名称而非ID进行save和load操作,以便于后续管理和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       对于没有私有仓库来说,将本地镜像放到其它服务器上执行时,可以使用save和load方法,前者用来把镜像保存一个tar文件,后台从一个tar文件恢复成一个镜像,这个功能对于开发者来说还是很方便的!下面就带大家来实现上面的过程。

docker images  查看一下本地镜像

[root@Dimage ~]# docker images
REPOSITORY                                                    TAG                 IMAGE ID            CREATED             SIZE
sonarqube                                                     7.1                 7a39fc50869a        8 months ago        803MB
gitlab/gitlab-ce                                              latest              80305d568e28        9 months ago        1.47GB
postgres                                                      10.4                978b82dc00dc        11 months ago       236MB

这里以sonarqube、postgres两个镜像为例

[root@Dimage Templates]# docker save sonarqube -o /root/Templates/sonarqube.tar
[root@Dimage Templates]# docker save postgres -o /root/Templates/postgres.tar

将上面的sonarqube、postgres两个镜像保存成一个tar文件,注意如果目录没有,需要提前建立一下,docker不会帮你建立目录的。

使用xtfp、FileZilla等工具把文件下载,复制到对应的服务器上

在外测服务器上,去load你的tar文件,把这恢复到docker列表里

[root@jenkins ~]# docker load < /home/sonarqube.tar
f715ed19c28b: Loading layer [==================================================>]  105.5MB/105.5MB
8bb25f9cdc41: Loading layer [==================================================>]  23.99MB/23.99MB
08a01612ffca: Loading layer [==================================================>]  7.994MB/7.994MB
1191b3f5862a: Loading layer [==================================================>]  146.4MB/146.4MB
097524d80f54: Loading layer [==================================================>]  2.332MB/2.332MB
685f72a7cd4f: Loading layer [==================================================>]  3.584kB/3.584kB
9c147c576d67: Loading layer [==================================================>]  1.536kB/1.536kB
4fbf445e0074: Loading layer [==================================================>]  356.3MB/356.3MB
f8d2b3161911: Loading layer [==================================================>]  362.5kB/362.5kB
23125fec8240: Loading layer [==================================================>]  338.4kB/338.4kB
1e09c232b1a9: Loading layer [==================================================>]  1.292MB/1.292MB
8fb1d730c37c: Loading layer [==================================================>]  177.8MB/177.8MB
195b3d541b37: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: sonarqube:7.1
[root@180348-jenkins ~]# docker load < /home/postgres.tar
cdb3f9544e4c: Loading layer [==================================================>]  58.44MB/58.44MB
add4404d0b51: Loading layer [==================================================>]  10.43MB/10.43MB
0fae9a7d0574: Loading layer [==================================================>]  338.4kB/338.4kB
df9515382700: Loading layer [==================================================>]  3.059MB/3.059MB
998e6abcfae7: Loading layer [==================================================>]   17.1MB/17.1MB
c6fcee3b341c: Loading layer [==================================================>]  1.102MB/1.102MB
7c050956ab95: Loading layer [==================================================>]  1.536kB/1.536kB
ed4da41a79a9: Loading layer [==================================================>]  8.192kB/8.192kB
dd2083da8cd1: Loading layer [==================================================>]    154MB/154MB
fa8311b04439: Loading layer [==================================================>]  27.14kB/27.14kB
82360595589e: Loading layer [==================================================>]  2.048kB/2.048kB
20cbebd1cd5c: Loading layer [==================================================>]  3.072kB/3.072kB
b607040b9b5b: Loading layer [==================================================>]  8.704kB/8.704kB
Loaded image: postgres:10.4

然后使用docker images就可以看到自己加载的新的镜像了

[root@jenkins ~]# docker ps
CONTAINER ID        IMAGE                                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
b4cf326fbf10        sonarqube:7.1                                           "./bin/run.sh"           4 seconds ago       Up 3 seconds        0.0.0.0:9000->9000/tcp   sonarqube
a9ccfaf9a91e        postgres:10.4                                           "docker-entrypoint.s…"   16 minutes ago      Up 16 minutes       0.0.0.0:5432->5432/tcp   postgresql

注意:docker save postgres -o /root/Templates/sonarqube.tar,这里最好是用镜像名,不要使用镜像ID,不然load出来的镜像显示如下REPOSITORY、TAG均显示none,不便于后面进一步操作

[root@jenkins ~]# docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
sonarqube                                       7.1                 7a39fc50869a        8 months ago        803MB
<none>                                          <none>              978b82dc00dc        11 months ago       236MB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值