docker的镜像搬运工具
我们需要在多个docker仓库之间搬运,或者把仓库的镜像搬运到本地,或者搬运到本地的时候extract展开,这里讨论常用的方法
occystrap 搬运
项目地址:https://github.com/shakenfist/occystrap
安装方式:pip install occystrap
如果你要访问的repo仓库是 https自签证书的,浏览器直接访问https会报错的那种,需要补丁下代码,默认的代码是强校验https证书,不通过会失败。
访问:.venv\Lib\site-packages\occystrap\util.py 或者取决于使用的 python解释器的位置。 实在找不到,就用 everything全局搜索occystrap文件夹
找到
- util.py
# 找到 request_url 函数,修改为【增加:verify=False)】 def request_url(method, url, headers=None, data=None, stream=False): if not headers: headers = {} headers.update({'User-Agent': get_user_agent()}) if data: headers['Content-Type'] = 'application/json' r = requests.request(method, url, data=json.dumps(data), headers=headers, stream=stream, verify=False)
即可正常执行docker搬运,默认支持:
- fetch-to-extracted
- fetch-to-mounts
- fetch-to-oci
- fetch-to-tarfile
- recreate-image
这里以远程下载docker镜像,并在本地解压为例,方便我们脱离docker环境查看镜像的内容。
参数风格: repo仓库ip或地址 镜像坐标 版本号 本地的文件夹路径
occystrap fetch-to-extracted 172.10.10.10 public/nginx 1.1.1 nginx-1.1.1.1
使用skopeo搬运
sudo apt install skopeo
然后把远程镜像导出到本地,不解压的导出
skopeo copy –src-tls-verify=false docker:10.0.0.1/public/nginx:1.1.1 dir:./local-image''
src-tls-verify 是可选的,如果是本地自签证书,就需要人肉忽略