小工具:批量導入導出主機上的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 命令查看導入后結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM