Skip to content

ivmoe/pyDockerMirror

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyDockerMirror 容器镜像转存工具

支持范围

建议使用Python3.7+,以下版本没有经过验证。 理论上凡是支持Docker登录、pull、push的私有仓库均适用。

TODO

  • 批量镜像拉取及推送

PS: 其实我认为目前功能已经够用了,上边功能哪天闲下来再加吧。

更新日志

2024-11-21 新增批量拉取镜像功能,新增线程池,加快多镜像拉取速度。 如果没有必要,可能不会再更新了。 写到这里,我觉得这个项目已经基本满足我的需求了,如果有什么问题,欢迎提issue。

镜像加速器配置

针对目前DockerHub官方被Ban的情况下,可以通过配置/etc/docker/daemon.json配置镜像加速器。

下面是我的配置:

{
        "registry-mirrors": [
            "https://docker.1panel.dev",
            "https://dockerproxy.net"
        ]
}

配置完成后,需要执行以下两个命令以生效:

systemctl daemon-reload
systemctl restart docker.service

编译

  • 源码编译
# 安装python依赖库 pyinstaller、docker
pip3 install pyinstaller docker

# 下载仓库代码
git clone https://github.com/ivmoe/pyDockerMirror.git

# 进入仓库目录
cd pyDockerMirror

# 编译,生成二进制文件,生成的二进制文件在dist目录下
pyinstaller -F pydm.py

使用说明

  • 下载二进制文件并解压
wget https://github.com/ivmoe/pyDockerMirror/releases/download/v1.0.0/pyDockerMirror.tar.gz
tar -zxvf pyDockerMirror.tar.gz
  • 添加执行权限,并拷贝至/usr/local/bin目录下
chmod +x pydm && cp pydm /usr/local/bin
  • 查看帮助信息
pydm help
  • 配置初始化

privateRegistry 域名: 填写私有仓库域名,可以是harbor或者阿里云镜像仓库

privateRegistry 用户名: 填写账号,具有pull和push权限

privateRegistry 密码: 填写密码

privateRegistry 项目: 填写项目(仓库)名称,默认为public

示例:

  • 镜像同步到私有仓库

拉取镜像到本地,重新Tag后推送镜像到私有仓库。

pydm pull <镜像名称>
# 或者
pydm pull <文件名>

project没有写对的话,报错如下:

  • 镜像拉取至本地

仅拉取到本地,不上传至私有仓库,不修改镜像Tag

pydm pull-local <镜像名称>
# 或者
pydm pull-local <文件名>

例如:

# 拉取单个镜像
pydm pull nginx:latest
pydm pull-local nginx:latest

# 拉取多个镜像
cat > images.txt << EOF
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/python:3-alpine
stilleshan/anylink:0.9.4
node:lts-alpine
EOF

pydm pull images.txt
pydm pull-local images.txt
  • 配置管理

在执行pydm init初始化后,会生成配置文件/etc/pydm/config,存储相关信息。

privateRegistry:
  domain: registry.cn-hangzhou.aliyuncs.com
  username: ******
  password: ******
  project: kelvyn

About

容器镜像转存工具

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages