Files
geg-gas-doc/宝策/docker_registry.sh

169 lines
4.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Docker Registry容器名称
CONTAINER_NAME="docker-registry"
# Registry版本
REGISTRY_VERSION="2"
# 映射端口
PORT="5000"
# 数据存储路径
DATA_PATH="/docker-data/registry/data"
# 日志路径
LOG_PATH="/docker-data/registry/logs"
# 认证配置路径
AUTH_PATH="/docker/registry/auth"
# admin Docker@123
# htpasswd -Bbc "/docker/registry/auth/htpasswd" "admin" "Docker@123"
# 创建目录并设置权限函数
create_dirs() {
# 创建数据目录并设置权限
if [ ! -d "$DATA_PATH" ]; then
mkdir -p "$DATA_PATH"
echo "创建数据目录: $DATA_PATH"
chmod -R 777 "$DATA_PATH"
echo "设置数据目录权限: $DATA_PATH"
fi
# 创建日志目录并设置权限
if [ ! -d "$LOG_PATH" ]; then
mkdir -p "$LOG_PATH"
echo "创建日志目录: $LOG_PATH"
chmod -R 777 "$LOG_PATH"
echo "设置日志目录权限: $LOG_PATH"
fi
# 创建日志目录并设置权限
if [ ! -d "$AUTH_PATH" ]; then
mkdir -p "$AUTH_PATH"
echo "创建日志目录: $AUTH_PATH"
chmod -R 777 "$AUTH_PATH"
echo "设置日志目录权限: $AUTH_PATH"
fi
}
# 部署Registry
deploy() {
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
echo "Registry容器 $CONTAINER_NAME 已存在并运行中"
return 1
fi
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "发现已停止的Registry容器正在启动..."
docker start $CONTAINER_NAME
return 0
fi
echo "开始部署Registry容器..."
create_dirs
docker run -d --restart always \
-p $PORT:5000 \
-v $DATA_PATH:/var/lib/registry \
-v $LOG_PATH:/var/log/registry \
-v $AUTH_PATH:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
--name $CONTAINER_NAME registry:$REGISTRY_VERSION
if [ $? -eq 0 ]; then
echo "Registry容器部署成功"
echo "容器名称: $CONTAINER_NAME"
echo "访问地址: http://localhost:$PORT"
else
echo "Registry容器部署失败"
fi
}
# 查看日志
logs() {
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "Registry容器 $CONTAINER_NAME 不存在"
return 1
fi
echo "查看Registry容器日志 (按Ctrl+C退出)..."
docker logs -f --tail 200 $CONTAINER_NAME
}
# 重启容器
restart() {
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "Registry容器 $CONTAINER_NAME 不存在"
return 1
fi
echo "正在重启Registry容器..."
docker restart $CONTAINER_NAME
if [ $? -eq 0 ]; then
echo "Registry容器重启成功"
else
echo "Registry容器重启失败"
fi
}
# 删除容器
remove() {
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "Registry容器 $CONTAINER_NAME 不存在"
return 1
fi
echo "警告此操作将删除Registry容器但数据目录会保留"
read -p "确定要删除吗?(y/n) " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
echo "取消删除操作"
return 0
fi
echo "正在停止并删除Registry容器..."
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
if [ $? -eq 0 ]; then
echo "Registry容器删除成功"
echo "数据保留在: $DATA_PATH"
echo "日志保留在: $LOG_PATH"
else
echo "Registry容器删除失败"
fi
}
# 显示帮助
show_help() {
echo "Docker Registry容器管理脚本"
echo "用法: $0 [命令]"
echo "命令列表:"
echo " deploy - 部署并启动Registry容器"
echo " logs - 查看Registry容器日志"
echo " restart - 重启Registry容器"
echo " remove - 删除Registry容器(保留数据和日志)"
echo " help - 显示帮助信息"
}
# 主逻辑
case "$1" in
deploy)
deploy
;;
logs)
logs
;;
restart)
restart
;;
remove)
remove
;;
help)
show_help
;;
*)
echo "未知命令: $1"
show_help
exit 1
;;
esac