需要一个脚本,三十个左右的镜像打成一个tar包。
python / shell 脚本都可以。
我不知道说什么 了,凑字数。
docker save <myimage>:<tag> | gzip > <myimage>_<tag>.tar.gz
gunzip -c <myimage>_<tag>.tar.gz | docker load
docker save image1:tag1 image2:tag2 ...(所有的镜像+tag) |gzip image.tar.gz
好家伙,回来一看,问题还没结题,那我写一个,其实就是用 python 调用 docker 命令 罢了。
#! /usr/bin/env python3
# _*_ coding: utf8 _*_
import re
from subprocess import run, PIPE
def img_tar():
result = run('''docker images ''', shell=True, stdout=PIPE, universal_newlines=True)
img_id = ''.join(re.findall(r' \w{12}', result.stdout))
if run(f'''docker save -o all.tar {img_id}''', shell=True, stdout=PIPE, universal_newlines=True):
print('docker 镜像全部打包完毕')
if __name__ == '__main__':
img_tar()
导入使用命令 docker load <all.tar
这样的运行结果,已满足题主你的问题了, 导出到一个tar 包内。
所有镜像导出到一个tar包?
为啥不先导出在一个目录,然后在将目录做成一个tar包呢?
嫌麻烦的话写个几行的shell 就解决了啊
楼上说的都可行,我猜你是不知如何动手,,
有疑问,我们可以交流
1.这个是忽略没有标签的镜像命令 忽略的是这个none 后面是控制镜像数量 全部都导出后面可以换成 xargs -n 10
docker image save -o 包名.tar `docker images|awk 'NR>1&&!/none/{print $1":"$2}'|head -n 30 `
2.如果你的镜像都有标签可以使用下面这个命令 后面是控制镜像数量 全部都导出后面可以换成 xargs -n 10
docker image save -o 包名.tar `docker images|awk 'NR>1{print $1":"$2}'|head -n 10`
希望能对你有帮助