将docker里的所有正在运行的docker容器commit成images镜像并推送至harbor仓库里
脚本一
需求:将本地服务器上正在运行的所有容器打包成镜像并上传至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 仓库完成。"
脚本二
需求:将本地服务器上正在运行的所有容器(如果容器名称以 "e8-tianyi" 或 "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
# 获取服务器上正在使用的容器列表
containers=$(docker ps --format "{{.Names}}")
# 遍历每个容器并将其提交为镜像并上传到Harbor,除了e8-tianyi和jet-compute
for container in $containers; do
# 如果容器名称以 "e8-tianyi" 或 "jet-compute" 开头,则跳过
if [[ "$container" == "e8-tianyi"* || "$container" == "jet-compute"* ]]; then
echo "跳过容器 $container"
continue
fi
# 获取容器ID
container_id=$(docker ps -qf "name=$container")
# 提取容器名称,将大写字母转换为小写
container_name=$(echo "$container" | tr 'A-Z' 'a-z')
# 生成一个时间戳作为日期,例如 "20231013"
timestamp=$(date '+%Y%m%d')
# 构建镜像名称,格式为 m62all-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 仓库完成。"