这是一个用于同步Docker镜像的Bash脚本,可以从一个Docker仓库拉取镜像,重新标记后推送到另一个仓库。
./docker-sync.sh <源镜像> [目标镜像]
脚本支持通过环境变量设置默认仓库路径:
export DOCKER_REGISTRY=docker.cnb.cool # Docker仓库地址
export REPO_SLUG_LOWERCASE=fastjrun/docker # 仓库路径
当设置环境变量后,脚本会自动拼接为:${DOCKER_REGISTRY}/${REPO_SLUG_LOWERCASE}/
如果没有设置环境变量,会使用默认路径:docker.cnb.cool/fastjrun/docker/
export DOCKER_REGISTRY=docker.cnb.cool
export REPO_SLUG_LOWERCASE=fastjrun/docker
./docker-sync.sh nginx
自动推送到:docker.cnb.cool/fastjrun/docker/nginx
执行流程:
docker pull nginxdocker tag nginx docker.cnb.cool/fastjrun/docker/nginxdocker push docker.cnb.cool/fastjrun/docker/nginxexport DOCKER_REGISTRY=docker.cnb.cool
export REPO_SLUG_LOWERCASE=fastjrun/docker
./docker-sync.sh nginx nginx-custom
自动推送到:docker.cnb.cool/fastjrun/docker/nginx-custom
export DOCKER_REGISTRY=custom-registry.com
export REPO_SLUG_LOWERCASE=myproject/docker
./docker-sync.sh app
自动推送到:custom-registry.com/myproject/docker/app
./docker-sync.sh nginx:1.21 docker.cnb.cool/fastjrun/docker/nginx:1.21
./docker-sync.sh redis:alpine other-registry.com/project/redis
./docker-sync.sh postgres:13 docker.cnb.cool/fastjrun/docker/postgres-db:13
脚本执行完成后会保留所有本地镜像:
docker rmi 命令脚本提供了详细的日志输出,包括:
========================================== Docker镜像同步配置: 源镜像: redis 目标镜像: docker.cnb.cool/fastjrun/docker/redis ========================================== [INFO] Docker环境检查通过 [INFO] 开始拉取镜像: redis [INFO] 镜像拉取成功: redis [INFO] 标记镜像: redis -> docker.cnb.cool/fastjrun/docker/redis [INFO] 镜像标记成功: docker.cnb.cool/fastjrun/docker/redis [INFO] 开始推送镜像: docker.cnb.cool/fastjrun/docker/redis [INFO] 镜像推送成功: docker.cnb.cool/fastjrun/docker/redis [INFO] 镜像同步完成! [INFO] 所有操作完成!