脚本一
需求:将本地服务器上正在运行的所有容器打包成镜像并上传至Harbor仓库下的指定项目里
#!/bin/bash
# 设置Harbor仓库的地址和凭据
HARBOR_URL="192.168.1.55:88"
HARBOR_USERNAME="admin"
HARBOR_PASSWORD="Harbor12345"
HARBOR_PROJECT="m55all-images"
# 登录到Harbor仓库
docker login $HARBOR_URL -u $HARBOR_USERNAME -p $HARBOR_PASSWORD
# 获取服务器上正在运行的容器列表
containers=$(docker ps --format "{{.Names}}")
# 遍历每个容器并将其提交为镜像并上传到Harbor
for container in $containers; do
# 获取容器ID
container_id=$(docker ps -qf "name=$container")
# 提取容器名称,将大写字母转换为小写
container_name=$(echo "$container" | tr 'A-Z' 'a-z')
# 生成一个时间戳作为日期,例如 "20231013"
timestamp=$(date '+%Y%m%d')
# 构建镜像名称,格式为 m55all-images/容器使用的镜像_日期
image_name="$HARBOR_URL/$HARBOR_PROJECT/$container_name"_"$timestamp"
# 提交容器为镜像
docker commit $container_id "$image_name"
# 上传镜像到Harbor
docker push "$image_name"
echo "容器 $container 已提交为镜像并上传至Harbor $HARBOR_PROJECT 仓库成功!"
done
echo "所有正在运行的容器已提交为镜像并上传至Harbor $HARBOR_PROJECT 仓库完成。"
脚本二
需求:将本地服务器上正在运行的所有容器(如果镜像名称以 "jet-ana" 或 "jet-compute" 开头,则跳过)打包成镜像并上传至Harbor仓库下的指定项目里
#!/bin/bash
# 设置Harbor仓库的地址和凭据
HARBOR_URL="192.168.1.55:88"
HARBOR_USERNAME="admin"
HARBOR_PASSWORD="Harbor12345"
HARBOR_PROJECT="m62all-images"
# 登录到Harbor仓库
docker login $HARBOR_URL -u $HARBOR_USERNAME -p $HARBOR_PASSWORD
# 获取服务器上的所有Docker镜像列表
images=$(docker images --format "{{.Repository}}:{{.Tag}}")
# 遍历每个镜像并上传到Harbor的m55all-images仓库
for image in $images; do
# 提取镜像的仓库名称和标签
repo=$(echo $image | cut -d':' -f1)
tag=$(echo $image | cut -d':' -f2)
# 如果镜像名称以 "jet-ana" 或 "jet-compute" 开头,则跳过
if [[ "$repo" == "jet-ana"* || "$repo" == "jet-compute"* ]]; then
echo "跳过镜像 $image"
continue
fi
# 构建Harbor仓库中的镜像引用
harbor_image="$HARBOR_URL/$HARBOR_PROJECT/$repo:$tag"
# 重新标记镜像,将其命名为Harbor仓库的地址
docker tag $image $harbor_image
# 上传镜像到Harbor
docker push $harbor_image
echo "镜像 $image 上传至Harbor $HARBOR_PROJECT 仓库成功!"
done
echo "所有Docker镜像上传至Harbor $HARBOR_PROJECT 仓库完成。"
标签:harbor,HARBOR,image,仓库,Harbor,images,镜像,docker From: https://www.cnblogs.com/likecoke/p/17761265.html