对于没有私有仓库来说,将本地镜像放到其它服务器上执行时,可以使用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