docker多个容器一起打包_docker容器打包、镜像文件导入与导出 , 支持批量

news/2024/7/24 18:43:27 标签: docker多个容器一起打包

1. 查看镜像id

sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

quay.io/calico/node v1.0.1 c70511a49fa1 6 weeks ago 257 MB

hello-world latest 48b5124b2768 2 months ago 1.84 kB

quay.io/coreos/flannel v0.7.0 63cee19df39c 2 months ago 73.8 MB

quay.io/calico/cni v1.5.5 ada87b3276f3 2 months ago 67.1 MB

2. 选择要打包的镜像,执行打包命令

sudo docker save -o quay.io-calico-node-1.tar quay.io/calico/node

docker save REPOSITORY:TAG | gzip > REPOSITORY:TAG.tar.gz

会在当前目录下生成导出文件xxx.tar,然后将此文件下载到本地

3. 在开发环境导入上述打包的镜像

docker load -i quay.io-calico-node-1.tar

0a43edc59c00: Loading layer 27.59 MB/27.59 MB

69a5574b2581: Loading layer 3.636 MB/3.636 MB

fb0933709f36: Loading layer 3.913 MB/3.913 MB

7384abd120f5: Loading layer 3.859 MB/3.859 MB

e34911610de0: Loading layer 27.06 MB/27.06 MB

d6ec327c8cbe: Loading layer 6.656 kB/6.656 kB

Loaded image ID: sha256:ada87b3276f307a6b1b1ada15820b6c9842fd839fe5cc46ad5db8af81f7fd271

至此,可以使用本地镜像了!

4. 批量导入导出镜像工具

①导出镜像:

import re

import os

import subprocess

if __name__ == "__main__":

os.system('rm -rf /tmp/xfleet')

os.system('mkdir -p /tmp/xfleet')

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.decode("utf-8"))

if not m:

continue

# 镜像名

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

os.system(cmd)

# 将tar包放在临时目录

os.system('mv %s /tmp/xfleet/'%tarball)

retval = p.wait()

②导入镜像:

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)

容器打包成镜像:

docker commit -a "xxx" -m "xxx"容器名称或id 打包的镜像名称:标签

OPTIONS说明:-a :提交的镜像作者;-c :使用Dockerfile指令来创建镜像;-m :提交时的说明文字;-p :在commit时,将容器暂停。

小工具参考资料:http://www.cnblogs.com/ksir16/p/8865525.html


http://www.niftyadmin.cn/n/1251657.html

相关文章

WinSCP SSH登录Linux服务器

Wnscp dondown xshell6 下载这个都可以,xftp6和xshell6 download 首先输入主机名然后选择高级 然后选择 SHH -->验证-->密钥文件 选择私钥即可,选择过程中如果提示转码,直接选择转码,并保存到本地,然后选择…

总结c语言中数组的用途,总结一下C语言中的数组

1.关于数组的定义类型 数组名[常量表达式]定义一个长度可变的数组Example1: 错误#include#includeint main(){int n 10;int a[n] {0};system("pause");return 0;}Example2:#include#includeint main(){const int n 4; //此处n为符号常量int a[n] {1,2,3,4};pr…

php防伪溯源x系统_一物一码防伪溯源系统的好处与价值?

防伪溯源系统的好处:1、保障产品质量:生产管理规范化、标准化,是提高产品质量的有力保障。2、实施缺陷召回:当发现产品质量缺陷时,可迅速实现缺陷产品召回,将损害与损失降至较低。3、提升品牌形象&#xff…

map转换成JSON的方法

第一种alibaba falstjson&#xff1a; 1.Map转JSON Map<String, Object> map new HashMap<String, Object>();map.put("a", "a");map.put("b", "123");JSONObject json new JSONObject(map);2.map转string Map<Stri…

44 道 JS '难'题,做对一半就是高手

来源 | https://www.jianshu.com/p/e161bd720e64国外某网站给出了44道JS难题&#xff0c;试着做了下&#xff0c;只做对了17道。这些题涉及面非常广&#xff0c;涵盖JS原型、函数细节、强制转换、闭包等知识&#xff0c;而且都是非常细节的东西&#xff0c;透过这些小细节可以折…

C语言链表快速创建,C语言链表的创建,插入,删除

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#includestruct student{long number;char name[8];float score;struct student *next;}*headNULL;int sum0; //计数void main(){void show();void insert();void del();char command[6];printf("***********…

Navicat Premium 12破解方法

1、按步骤安装Navicat Premium&#xff0c;如果没有可以去官网下载&#xff1a;http://www.navicat.com.cn/download/navicat-premium 2.安装好后下载激活文件&#xff1a;https://pan.baidu.com/s/1OHGlCe7DRLx_3Nfow5Ii_g 3、下载好后解压文件&#xff0c;可以看到如下目录…

guid主分区表损坏如何处理_如何使用老毛桃winpe的Bootice工具复制启动项GUID?

最近有位朋友想要对电脑开机启动项进行编辑操作&#xff0c;比如说复制启动项GUID&#xff0c;但是不知道怎么去操作。其实&#xff0c;电脑BCD文件就是一个启动项数据文件&#xff0c;通过Bootice工具编辑BCD文件&#xff0c;就可以让我们轻松进行启动项相关操作。下面就来看看…