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文件夹
找到
# 找到 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 是可选的,如果是本地自签证书,就需要人肉忽略
评论