cczhung / images_push

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mirror Image

将国内拉取不了的镜像,用海外服务器进行拉取,然后推送到国内的私有镜像仓库,部署时从私有镜像仓库拉取下来即可。

解决方案

我们将需拉取的镜像列表录入到一个或多个镜像列表文件中,并将文件路径传入本项目pull_public_registry.sh脚本运行,就可开始拉取镜像,镜像拉取完成后,脚本自动修改镜像的tag,并推送到国内私有镜像仓库,解决了拉取不了镜像的问题;需镜像主机,使用同一镜像列表文件,将文件路径传入本项目pull_private_registry.sh脚本运行,即可从国内私有镜像仓库中拉取镜像,脚本将自动修改回镜像原本的tag

必要条件

  • 拉取镜像的服务器网络没有被和谐。
  • 已安装Docker的Linux系统。Ubuntu 14.04+,CentOS 7.X经过测试可用。

下载项目

  • gitlabclone项目至本地。
git clone http://rdc.hand-china.com/gitlab/rdc_hip/mirror-image.git

项目使用

  • 本项目脚本使用时需镜像列表文件路径作为参数传入。
    • 镜像路径和需推向的目的仓库地址/项目名称成对录入到一个或多个镜像列表文件中,该镜像列表文件具体录入格式请移步:镜像列表文件格式

拉取海外镜像

  • 登录私有镜像仓库。
    • 私有镜像仓库registry.saas.hand-china.com的仓库为例。
sudo docker login registry.saas.hand-china.com
# 然后按照系统提示输入用户名和密码登录
  • 运行脚本拉取镜像。
# 事例以本项目中data文件夹中的[镜像列表文件]为例进行镜像拉取。
# 一个[镜像列表文件]拉取镜像。
./pull_public_registry.sh ./data/imageList.part1.txt
# 多个[镜像列表文件]拉取镜像。
./pull_public_registry.sh ./data/imageList.part1.txt ./data/imageList.part2.txt

部署镜像到本地

  • 运行脚本部署镜像。
# 事例以本项目中data文件夹中的[镜像列表文件]为例进行镜像拉取。
# 一个[镜像列表文件]拉取镜像。
./pull_private_registry.sh ./data/imageList.part1.txt
# 多个[镜像列表文件]拉取镜像。
./pull_private_registry.sh ./data/imageList.part1.txt ./data/imageList.part2.txt

运行异常处理

  • 项目生成not_pull_images.txt文件时,表示拉取镜像时出错,文件内容为未拉取的镜像列表,请排查以下情况后(包括但不限于),以该文件做为镜像列表文件传入脚本运行即可:
    • 1.网络是否畅通。
    • 2.镜像列表文件格式是否正确。
    • 3.镜像列表文件镜像地址是否填写正确。
  • 项目生成not_push_images.txt文件时,表示推送镜像时出错,文件内容为未推送的镜像列表,请排查以下情况后(包括但不限于),以该文件做为镜像列表文件传入脚本运行即可:
    • 1.网络是否畅通。
    • 2.是否登录私有镜像仓库
    • 3.镜像列表文件格式是否正确。
    • 4.查看image是否存在:sudo docker images
    • 5.私有镜像仓库中是否创建有要推送到的项目名称
    • 6.镜像列表文件目的仓库地址/项目名称是否填写正确。

报错的解决方法

  • shell /bin/bash^M: bad interpreter:No such file or directory
  • '\r': command not found
# 查看脚本格式,这里以pull_public_registry.sh脚本为例。
vi pull_public_registry.sh
:set ff
# 若显示set fileformat=doc则执行以下代码,修改格式为unix。
:set fileformat=unix
:wq

About


Languages

Language:Shell 100.0%