zoukankan      html  css  js  c++  java
  • 小工具:批量导入导出主机上的docker镜像

    工作需要,将主机上的部分镜像导出为tar文件,放便在其他主机上使用

    用python实现了一个批量打包脚本:

    import re
    import os
    import subprocess
    
    if __name__ == "__main__":
        p = subprocess.Popen('docker images', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        for line in p.stdout.readlines():
    
            # 此处的正则表达式是为了匹配镜像名以ufleet为开头的镜像
            # 实际使用中根据需要自行调整
            m = re.match(r'(^ufleet[^s]*s*)s([^s]*s)', line)
            
            # 镜像名
            iname = m.group(1).strip(' ')
            # tag
            itag = m.group(2)
    
            # tar包的名字
            tarname = iname.split('/')[-1]
            print(tarname)
            tarball = tarname + '.tar'
            ifull = iname + ':' + itag
            #save
            cmd = 'docker save -o ' + tarball + ' ' + ifull
            print os.system(cmd)
    
            # 将tar包放在临时目录
            print os.system('mv %s /tmp/xfleet/'%tarball)
    
    
        retval = p.wait()

    运行上述脚本后,会在/tmp/xfleet下生成所有的tar包,之后将此目录下的tar文件打包成一个压缩包

    cd /tmp/ufleet
    tar -czvf ufleetImages.tar.gz ./*.tar 

    将ufleetImages.tar.gz拷贝到目标主机上,就可以批量导入了

    脚本如下 dockerload.py:

    import os
    import sys
    
    if __name__ == "__main__":
        tarball = sys.argv[1]
        print(tarball)
    
        workdir = '/tmp/xfleet-images'
        os.system('rm -rf %s'%workdir)
        os.system('mkdir -p %s'%workdir)
        os.system('tar -zxvf %s -C %s'%(tarball, workdir))
    
        os.chdir(workdir)
        files = os.listdir(workdir)
        for filename in files:
            print(filename)
            os.system('docker load -i %s'%filename)

    脚本使用方法:

    python dockerload.py ufleetImages.tar.gz

    导入后可以使用docker images 命令查看导入后结果

  • 相关阅读:
    luogu1060开心的金明
    luogu1048采药
    uva1025城市里的间谍
    scoi刷题记录(2019/04/07)
    差分及树上差分的正确食用姿势(2019/2/21学习笔记)
    图论技巧(2019/1/28之一)
    考试反思(2019/1/26学习笔记)
    考试反思(2019/1/22)
    「一本通 5.2 例 5」皇宫看守
    「一本通 5.2 例 3」数字转换
  • 原文地址:https://www.cnblogs.com/ksir16/p/8865525.html
Copyright © 2011-2022 走看看