feat: Support one-click deployment of NVCR image acceleration proxy service.

This commit is contained in:
dqzboy
2024-08-30 21:22:49 +08:00
parent f51655df38
commit 625cb995f7
5 changed files with 285 additions and 261 deletions

View File

@@ -6,7 +6,7 @@
<p align="center"> <p align="center">
<img src="https://github.com/dqzboy/Docker-Proxy/assets/42825450/c187d66f-152e-4172-8268-e54bd77d48bb" width="230px" height="200px"> <img src="https://github.com/dqzboy/Docker-Proxy/assets/42825450/c187d66f-152e-4172-8268-e54bd77d48bb" width="230px" height="200px">
<br> <br>
<i>Self-built Docker image acceleration service, based on the official registry, one-click deployment of Docker, K8s, Quay, Ghcr, Mcr, elastic, and other image acceleration management services.</i> <i>Self-built Docker image acceleration service, based on the official registry, one-click deployment of Docker, K8s, Quay, Ghcr, Mcr, elastic, nvcr and other image acceleration management services.</i>
</p> </p>
</div> </div>
@@ -183,6 +183,7 @@ docker pull gcr.your_domain_name/google-containers/pause:3.1
| quay.io | quay.your_domain_name | Quay Container Registry | quay.io | quay.your_domain_name | Quay Container Registry
| mcr.microsoft.com | mcr.your_domain_name | Microsoft Container Registry | mcr.microsoft.com | mcr.your_domain_name | Microsoft Container Registry
| docker.elastic.co | elastic.your_domain_name | Elastic Stack | docker.elastic.co | elastic.your_domain_name | Elastic Stack
| nvcr.io | nvcr.your_domain_name | NVIDIA Container Registry
--- ---

View File

@@ -6,7 +6,7 @@
<p align="center"> <p align="center">
<img src="https://github.com/dqzboy/Docker-Proxy/assets/42825450/c187d66f-152e-4172-8268-e54bd77d48bb" width="230px" height="200px"> <img src="https://github.com/dqzboy/Docker-Proxy/assets/42825450/c187d66f-152e-4172-8268-e54bd77d48bb" width="230px" height="200px">
<br> <br>
<i>自建Docker镜像加速服务基于官方 registry 一键部署Docker、K8s、Quay、Ghcr、Mcr、elastic等镜像加速\管理服务.</i> <i>自建Docker镜像加速服务基于官方 registry 一键部署Docker、K8s、Quay、Ghcr、Mcr、elastic、nvcr等镜像加速\管理服务.</i>
</p> </p>
</div> </div>
@@ -194,6 +194,7 @@ docker pull gcr.your_domain_name/google-containers/pause:3.1
| quay.io | quay.your_domain_name | Quay Container Registry | quay.io | quay.your_domain_name | Quay Container Registry
| mcr.microsoft.com | mcr.your_domain_name | Microsoft Container Registry | mcr.microsoft.com | mcr.your_domain_name | Microsoft Container Registry
| docker.elastic.co | elastic.your_domain_name | Elastic Stack | docker.elastic.co | elastic.your_domain_name | Elastic Stack
| nvcr.io | nvcr.your_domain_name | NVIDIA Container Registry
--- ---

42
config/registry-nvcr.yml Normal file
View File

@@ -0,0 +1,42 @@
version: 0.1
log:
fields:
service: registry
storage:
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
cache:
blobdescriptor: inmemory
blobdescriptorsize: 10000
maintenance:
uploadpurging:
enabled: true
age: 168h
interval: 24h
dryrun: false
readonly:
enabled: false
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
Access-Control-Allow-Origin: ['*']
Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control']
Access-Control-Max-Age: [1728000]
Access-Control-Allow-Credentials: [true]
Access-Control-Expose-Headers: ['Docker-Content-Digest']
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
proxy:
remoteurl: https://nvcr.io
username:
password:
ttl: 168h

View File

@@ -143,6 +143,24 @@ services:
networks: networks:
- registry-net - registry-net
## nvcr.io
nvcr:
container_name: reg-nvcr
image: dqzboy/registry:latest
restart: always
environment:
- OTEL_TRACES_EXPORTER=none
#- http=http://host:port
#- https=http://host:port
volumes:
- ./registry/data:/var/lib/registry
- ./registry-elastic.yml:/etc/distribution/config.yml
#- ./htpasswd:/auth/htpasswd
ports:
- 59000:5000
networks:
- registry-net
## UI ## UI
registry-ui: registry-ui:
container_name: registry-ui container_name: registry-ui

View File

@@ -100,9 +100,72 @@ DOCKER_COMPOSE_FILE="docker-compose.yaml"
CMDUI_IMAGE_NAME="dqzboy/hubcmd-ui" CMDUI_IMAGE_NAME="dqzboy/hubcmd-ui"
CMDUI_COMPOSE_FILE="${GITRAW}/hubcmdui/${DOCKER_COMPOSE_FILE}" CMDUI_COMPOSE_FILE="${GITRAW}/hubcmdui/${DOCKER_COMPOSE_FILE}"
# Registry Domain prefix
REGISTRY_SLD="ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic、nvcr"
RECORDS=("ui" "hub" "gcr" "ghcr" "k8sgcr" "k8s" "quay" "mcr" "elastic" "nvcr")
attempts=0 attempts=0
maxAttempts=3 maxAttempts=3
# registry services
function REGISTRY_MENU() {
echo -e "${YELLOW}-------------------------------------------------${RESET}"
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}9)${RESET} ${BOLD}nvcr${RESET}"
echo -e "${GREEN}10)${RESET} ${BOLD}all${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
}
function REGISTRY_SER_MENU() {
echo -e "${YELLOW}-------------------------------------------------${RESET}"
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}9)${RESET} ${BOLD}nvcr${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
}
# 定义Docker容器服务名称
CONTAINER_SERVICES() {
services=(
"dockerhub"
"gcr"
"ghcr"
"quay"
"k8sgcr"
"k8s"
"mcr"
"elastic"
"nvcr"
)
}
REGISTRY_FILES() {
files=(
"dockerhub registry-hub.yml"
"gcr registry-gcr.yml"
"ghcr registry-ghcr.yml"
"quay registry-quay.yml"
"k8sgcr registry-k8sgcr.yml"
"k8s registry-k8s.yml"
"mcr registry-mcr.yml"
"elastic registry-elastic.yml"
"nvcr registry-nvcr.yml"
)
}
function CHECK_OS() { function CHECK_OS() {
SEPARATOR "检查环境" SEPARATOR "检查环境"
@@ -482,7 +545,7 @@ fi
function CONFIG_CADDY() { function CONFIG_CADDY() {
SEPARATOR "配置Caddy" SEPARATOR "配置Caddy"
while true; do while true; do
INFO "${LIGHT_GREEN}>>> 域名解析主机记录(即域名前缀):${RESET} ${LIGHT_CYAN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" INFO "${LIGHT_GREEN}>>> 域名解析主机记录(即域名前缀):${RESET} ${LIGHT_CYAN}${REGISTRY_SLD}${RESET}"
WARN "${LIGHT_GREEN}>>> 只需选择你部署的服务进行解析即可${RESET},${LIGHT_YELLOW}无需将上面提示中所有的主机记录进行解析${RESET}" WARN "${LIGHT_GREEN}>>> 只需选择你部署的服务进行解析即可${RESET},${LIGHT_YELLOW}无需将上面提示中所有的主机记录进行解析${RESET}"
read -e -p "$(WARN "是否配置Caddy,实现自动HTTPS? 执行前需在DNS服务商对部署服务解析主机记录 ${PROMPT_YES_NO}")" caddy_conf read -e -p "$(WARN "是否配置Caddy,实现自动HTTPS? 执行前需在DNS服务商对部署服务解析主机记录 ${PROMPT_YES_NO}")" caddy_conf
case "$caddy_conf" in case "$caddy_conf" in
@@ -491,7 +554,7 @@ while true; do
read -e -p "$(INFO "请输入要配置的${LIGHT_MAGENTA}主机记录${RESET},用逗号分隔${LIGHT_BLUE}[例: ui,hub]${RESET}: ")" selected_records read -e -p "$(INFO "请输入要配置的${LIGHT_MAGENTA}主机记录${RESET},用逗号分隔${LIGHT_BLUE}[例: ui,hub]${RESET}: ")" selected_records
# 验证输入的主机记录 # 验证输入的主机记录
local valid_records=("ui" "hub" "gcr" "ghcr" "k8sgcr" "k8s" "quay" "mcr" "elastic") local valid_records=("${RECORDS[@]}")
IFS=',' read -r -a records_array <<< "$selected_records" IFS=',' read -r -a records_array <<< "$selected_records"
local invalid_records=() local invalid_records=()
for record in "${records_array[@]}"; do for record in "${records_array[@]}"; do
@@ -502,7 +565,7 @@ while true; do
if [[ ${#invalid_records[@]} -gt 0 ]]; then if [[ ${#invalid_records[@]} -gt 0 ]]; then
ERROR "无效的主机记录: ${LIGHT_RED}${invalid_records[@]}${RESET}" ERROR "无效的主机记录: ${LIGHT_RED}${invalid_records[@]}${RESET}"
INFO "请输入有效的主机记录: ${LIGHT_GREEN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" INFO "请输入有效的主机记录: ${LIGHT_GREEN}${REGISTRY_SLD}${RESET}"
continue continue
fi fi
@@ -581,6 +644,14 @@ while true; do
header_up X-Forwarded-For {remote_addr} header_up X-Forwarded-For {remote_addr}
header_up X-Nginx-Proxy true header_up X-Nginx-Proxy true
} }
}"
record_templates[nvcr]="nvcr.$caddy_domain {
reverse_proxy localhost:59000 {
header_up Host {host}
header_up X-Real-IP {remote_addr}
header_up X-Forwarded-For {remote_addr}
header_up X-Nginx-Proxy true
}
}" }"
> /etc/caddy/Caddyfile > /etc/caddy/Caddyfile
for record in "${records_array[@]}"; do for record in "${records_array[@]}"; do
@@ -715,7 +786,7 @@ function CONFIG_NGINX() {
SEPARATOR "配置Nginx" SEPARATOR "配置Nginx"
while true; do while true; do
WARN "自行安装的 Nginx ${LIGHT_RED}请勿执行此操作${RESET}${LIGHT_BLUE}以防覆盖原有配置${RESET}" WARN "自行安装的 Nginx ${LIGHT_RED}请勿执行此操作${RESET}${LIGHT_BLUE}以防覆盖原有配置${RESET}"
INFO "${LIGHT_GREEN}>>> 域名解析主机记录(即域名前缀):${RESET} ${LIGHT_CYAN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" INFO "${LIGHT_GREEN}>>> 域名解析主机记录(即域名前缀):${RESET} ${LIGHT_CYAN}${REGISTRY_SLD}${RESET}"
WARN "${LIGHT_GREEN}>>> 只需选择你部署的服务进行解析即可${RESET},${LIGHT_YELLOW}无需将上面提示中所有的主机记录进行解析${RESET}" WARN "${LIGHT_GREEN}>>> 只需选择你部署的服务进行解析即可${RESET},${LIGHT_YELLOW}无需将上面提示中所有的主机记录进行解析${RESET}"
read -e -p "$(WARN "是否配置 Nginx配置完成后需在DNS服务商解析主机记录 ${PROMPT_YES_NO}")" nginx_conf read -e -p "$(WARN "是否配置 Nginx配置完成后需在DNS服务商解析主机记录 ${PROMPT_YES_NO}")" nginx_conf
case "$nginx_conf" in case "$nginx_conf" in
@@ -724,7 +795,7 @@ while true; do
read -e -p "$(INFO "请输入要配置的${LIGHT_MAGENTA}主机记录${RESET},用逗号分隔${LIGHT_BLUE}[例: ui,hub]${RESET}: ")" selected_records read -e -p "$(INFO "请输入要配置的${LIGHT_MAGENTA}主机记录${RESET},用逗号分隔${LIGHT_BLUE}[例: ui,hub]${RESET}: ")" selected_records
# 验证输入的主机记录 # 验证输入的主机记录
local valid_records=("ui" "hub" "gcr" "ghcr" "k8sgcr" "k8s" "quay" "mcr" "elastic") local valid_records=("${RECORDS[@]}")
IFS=',' read -r -a records_array <<< "$selected_records" IFS=',' read -r -a records_array <<< "$selected_records"
local invalid_records=() local invalid_records=()
for record in "${records_array[@]}"; do for record in "${records_array[@]}"; do
@@ -735,7 +806,7 @@ while true; do
if [[ ${#invalid_records[@]} -gt 0 ]]; then if [[ ${#invalid_records[@]} -gt 0 ]]; then
ERROR "无效的主机记录: ${LIGHT_RED}${invalid_records[@]}${RESET}" ERROR "无效的主机记录: ${LIGHT_RED}${invalid_records[@]}${RESET}"
INFO "请输入有效的主机记录: ${LIGHT_GREEN}ui、hub、gcr、ghcr、k8sgcr、k8s、quay、mcr、elastic${RESET}" INFO "请输入有效的主机记录: ${LIGHT_GREEN}${REGISTRY_SLD}${RESET}"
continue continue
fi fi
@@ -983,6 +1054,33 @@ while true; do
proxy_buffering off; proxy_buffering off;
proxy_redirect off; proxy_redirect off;
} }
}"
record_templates[nvcr]="server {
listen 80;
#listen 443 ssl;
server_name nvcr.$nginx_domain;
#ssl_certificate /path/to/your_domain_name.crt;
#ssl_certificate_key /path/to/your_domain_name.key;
#ssl_session_timeout 1d;
#ssl_session_cache shared:SSL:50m;
#ssl_session_tickets off;
#ssl_protocols TLSv1.2 TLSv1.3;
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#ssl_prefer_server_ciphers on;
#ssl_buffer_size 8k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
location / {
proxy_pass http://localhost:59000;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-Proxy true;
proxy_buffering off;
proxy_redirect off;
}
}" }"
> /etc/nginx/conf.d/docker-proxy.conf > /etc/nginx/conf.d/docker-proxy.conf
for record in "${records_array[@]}"; do for record in "${records_array[@]}"; do
@@ -1324,7 +1422,6 @@ function update_docker_registry_url() {
fi fi
} }
function CONFIG_FILES() { function CONFIG_FILES() {
while true; do while true; do
read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}] > ")" install_docker_reg read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}] > ")" install_docker_reg
@@ -1339,6 +1436,7 @@ while true; do
"k8s reg-k8s ${GITRAW}/config/registry-k8s.yml" "k8s reg-k8s ${GITRAW}/config/registry-k8s.yml"
"mcr reg-mcr ${GITRAW}/config/registry-mcr.yml" "mcr reg-mcr ${GITRAW}/config/registry-mcr.yml"
"elastic reg-elastic ${GITRAW}/config/registry-elastic.yml" "elastic reg-elastic ${GITRAW}/config/registry-elastic.yml"
"nvcr reg-nvcr ${GITRAW}/config/registry-nvcr.yml"
) )
break;; break;;
2 ) 2 )
@@ -1351,6 +1449,7 @@ while true; do
"k8s reg-k8s ${CNGITRAW}/config/registry-k8s.yml" "k8s reg-k8s ${CNGITRAW}/config/registry-k8s.yml"
"mcr reg-mcr ${CNGITRAW}/config/registry-mcr.yml" "mcr reg-mcr ${CNGITRAW}/config/registry-mcr.yml"
"elastic reg-elastic ${CNGITRAW}/config/registry-elastic.yml" "elastic reg-elastic ${CNGITRAW}/config/registry-elastic.yml"
"nvcr reg-nvcr ${CNGITRAW}/config/registry-nvcr.yml"
) )
break;; break;;
* ) * )
@@ -1364,27 +1463,27 @@ function DOWN_CONFIG() {
selected_files=() selected_files=()
selected_containers=() selected_containers=()
echo -e "${YELLOW}-------------------------------------------------${RESET}" REGISTRY_MENU
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}9)${RESET} ${BOLD}all${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all下载所有${RESET} > ")" choices_reg read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all下载所有${RESET} > ")" choices_reg
while [[ ! "$choices_reg" =~ ^([0-9]+[[:space:]]*)+$ ]]; do
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号" while true; do
if [[ "$choices_reg" =~ ^[0-9]+([[:space:]][0-9]+)*$ ]]; then
valid=true
for choice in $choices_reg; do
if ((choice < 0 || choice > 10)); then
valid=false
break
fi
done
if $valid; then
break
fi
fi
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-10 ${RESET}序号"
read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all下载所有${RESET} > ")" choices_reg read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all下载所有${RESET} > ")" choices_reg
done done
if [[ "$choices_reg" == "10" ]]; then
if [[ "$choices_reg" == "9" ]]; then
for file in "${files[@]}"; do for file in "${files[@]}"; do
file_name=$(echo "$file" | cut -d' ' -f1) file_name=$(echo "$file" | cut -d' ' -f1)
container_name=$(echo "$file" | cut -d' ' -f2) container_name=$(echo "$file" | cut -d' ' -f2)
@@ -1400,7 +1499,7 @@ function DOWN_CONFIG() {
return return
else else
for choice in ${choices_reg}; do for choice in ${choices_reg}; do
if [[ $choice =~ ^[0-9]+$ ]] && ((choice > 0 && choice <= ${#files[@]})); then if ((choice > 0 && choice < 10)); then
file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1) file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1)
container_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2) container_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2)
file_url=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f3-) file_url=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f3-)
@@ -1408,8 +1507,6 @@ function DOWN_CONFIG() {
selected_containers+=("$container_name") selected_containers+=("$container_name")
selected_files+=("$file_url") selected_files+=("$file_url")
wget -NP ${PROXY_DIR}/ $file_url &>/dev/null wget -NP ${PROXY_DIR}/ $file_url &>/dev/null
else
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
fi fi
done done
@@ -2061,19 +2158,6 @@ esac
function SVC_MGMT() { function SVC_MGMT() {
CHECK_COMPOSE_CMD CHECK_COMPOSE_CMD
# 定义Docker容器服务名称
CONTAINER_SERVICES() {
services=(
"dockerhub"
"gcr"
"ghcr"
"quay"
"k8sgcr"
"k8s"
"mcr"
"elastic"
)
}
RESTART_SERVICE() { RESTART_SERVICE() {
CONTAINER_SERVICES CONTAINER_SERVICES
@@ -2081,22 +2165,28 @@ RESTART_SERVICE() {
selected_services=() selected_services=()
WARN "重启服务请在${LIGHT_GREEN}${DOCKER_COMPOSE_FILE}${RESET}文件存储目录下执行脚本.默认安装路径: ${LIGHT_BLUE}${PROXY_DIR}${RESET}" WARN "重启服务请在${LIGHT_GREEN}${DOCKER_COMPOSE_FILE}${RESET}文件存储目录下执行脚本.默认安装路径: ${LIGHT_BLUE}${PROXY_DIR}${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}" REGISTRY_MENU
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}" read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all表示所有${RESET} > ")" restart_service
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}" while true; do
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}" if [[ "$restart_service" =~ ^[0-9]+([[:space:]][0-9]+)*$ ]]; then
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}" valid=true
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}" for choice in $restart_service; do
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}" if ((choice < 0 || choice > 10)); then
echo -e "${GREEN}9)${RESET} ${BOLD}all${RESET}" valid=false
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}" break
echo -e "${YELLOW}-------------------------------------------------${RESET}" fi
done
if $valid; then
break
fi
fi
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-10 ${RESET}序号"
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all表示所有${RESET} > ")" restart_service
done
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all选择所有${RESET} > ")" restart_service if [[ "$restart_service" == "10" ]]; then
if [[ "$restart_service" == "9" ]]; then
for service_name in "${services[@]}"; do for service_name in "${services[@]}"; do
if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
selected_services+=("$service_name") selected_services+=("$service_name")
@@ -2104,13 +2194,17 @@ RESTART_SERVICE() {
WARN "服务 ${service_name}未运行,跳过重启。" WARN "服务 ${service_name}未运行,跳过重启。"
fi fi
done done
INFO "重启的服务: ${selected_services[*]}" if [ ${#selected_services[@]} -eq 0 ]; then
WARN "选择的服务未运行,无需进行重启"
else
INFO "更新的服务: ${selected_services[*]}"
fi
elif [[ "$restart_service" == "0" ]]; then elif [[ "$restart_service" == "0" ]]; then
WARN "退出重启服务!" WARN "退出重启服务!"
exit 1 return
else else
for choice in ${restart_service}; do for choice in ${restart_service}; do
if [[ $choice =~ ^[0-9]+$ ]] && ((choice >0 && choice <= ${#services[@]})); then if ((choice > 0 && choice < 10)); then
service_name="${services[$((choice -1))]}" service_name="${services[$((choice -1))]}"
if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
selected_services+=("$service_name") selected_services+=("$service_name")
@@ -2123,7 +2217,11 @@ RESTART_SERVICE() {
RESTART_SERVICE # 选择无效重新调用当前函数进行选择 RESTART_SERVICE # 选择无效重新调用当前函数进行选择
fi fi
done done
INFO "重启的服务: ${selected_services[*]}" if [ ${#selected_services[@]} -eq 0 ]; then
WARN "选择的服务未运行,无需进行重启"
else
INFO "更新的服务: ${selected_services[*]}"
fi
fi fi
} }
@@ -2131,22 +2229,28 @@ UPDATE_SERVICE() {
CONTAINER_SERVICES CONTAINER_SERVICES
selected_services=() selected_services=()
WARN "更新服务请在${LIGHT_GREEN}${DOCKER_COMPOSE_FILE}${RESET}文件存储目录下执行脚本.默认安装路径: ${LIGHT_BLUE}${PROXY_DIR}${RESET}" WARN "更新服务请在${LIGHT_GREEN}${DOCKER_COMPOSE_FILE}${RESET}文件存储目录下执行脚本.默认安装路径: ${LIGHT_BLUE}${PROXY_DIR}${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}9)${RESET} ${BOLD}all${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all选择所有${RESET} > ")" choices_service REGISTRY_MENU
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all表示所有${RESET} > ")" update_service
if [[ "$choices_service" == "9" ]]; then while true; do
if [[ "$update_service" =~ ^[0-9]+([[:space:]][0-9]+)*$ ]]; then
valid=true
for choice in $update_service; do
if ((choice < 0 || choice > 10)); then
valid=false
break
fi
done
if $valid; then
break
fi
fi
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-10 ${RESET}序号"
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all表示所有${RESET} > ")" update_service
done
if [[ "$update_service" == "10" ]]; then
for service_name in "${services[@]}"; do for service_name in "${services[@]}"; do
if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
selected_services+=("$service_name") selected_services+=("$service_name")
@@ -2154,13 +2258,17 @@ UPDATE_SERVICE() {
WARN "服务 ${service_name}未运行,跳过更新。" WARN "服务 ${service_name}未运行,跳过更新。"
fi fi
done done
INFO "更新的服务: ${selected_services[*]}" if [ ${#selected_services[@]} -eq 0 ]; then
elif [[ "$choices_service" == "0" ]]; then WARN "选择的服务未运行,无法进行更新"
else
INFO "更新的服务: ${selected_services[*]}"
fi
elif [[ "$update_service" == "0" ]]; then
WARN "退出更新服务!" WARN "退出更新服务!"
exit 1 return
else else
for choice in ${choices_service}; do for choice in ${update_service}; do
if [[ $choice =~ ^[0-9]+$ ]] && ((choice >0 && choice <= ${#services[@]})); then if ((choice > 0 && choice < 10)); then
service_name="${services[$((choice -1))]}" service_name="${services[$((choice -1))]}"
if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then if $DOCKER_COMPOSE_CMD ps --services 2>/dev/null | grep -q "^${service_name}$"; then
selected_services+=("$service_name") selected_services+=("$service_name")
@@ -2173,30 +2281,25 @@ UPDATE_SERVICE() {
UPDATE_SERVICE # 选择无效重新调用当前函数进行选择 UPDATE_SERVICE # 选择无效重新调用当前函数进行选择
fi fi
done done
INFO "更新的服务: ${selected_services[*]}"
if [ ${#selected_services[@]} -eq 0 ]; then
WARN "选择的服务未运行,无法进行更新"
else
INFO "更新的服务: ${selected_services[*]}"
fi
fi fi
} }
CONTAIENR_LOGS() { CONTAIENR_LOGS() {
CONTAINER_SERVICES CONTAINER_SERVICES
selected_services=() selected_services=()
echo -e "${YELLOW}-------------------------------------------------${RESET}" REGISTRY_SER_MENU
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all选择所有${RESET} > ")" restart_service read -e -p "$(INFO "输入序号选择对应服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项. ${LIGHT_CYAN}all选择所有${RESET} > ")" restart_service
if [[ "$restart_service" == "0" ]]; then if [[ "$restart_service" == "0" ]]; then
WARN "退出查看容器服务日志操作!" WARN "退出查看容器服务日志操作!"
exit 1 return
else else
for choice in ${restart_service}; do for choice in ${restart_service}; do
if [[ $choice =~ ^[0-9]+$ ]] && ((choice >0 && choice <= ${#services[@]})); then if [[ $choice =~ ^[0-9]+$ ]] && ((choice >0 && choice <= ${#services[@]})); then
@@ -2207,11 +2310,15 @@ CONTAIENR_LOGS() {
WARN "服务 ${service_name} 未运行,无法查看容器日志。" WARN "服务 ${service_name} 未运行,无法查看容器日志。"
fi fi
else else
ERROR "无效的选择: $choice. 请重新${LIGHT_GREEN}选择0-8${RESET}的选项" ERROR "无效的选择: $choice. 请重新${LIGHT_GREEN}选择0-9${RESET}的选项"
CONTAIENR_LOGS # 选择无效重新调用当前函数进行选择 CONTAIENR_LOGS # 选择无效重新调用当前函数进行选择
fi fi
done done
INFO "查看日志的服务: ${selected_services[*]}" if [ ${#selected_services[@]} -eq 0 ]; then
WARN "选择的服务未运行,无法查看日志"
else
INFO "查看日志的服务: ${selected_services[*]}"
fi
fi fi
} }
@@ -2220,30 +2327,10 @@ MODIFY_SERVICE_TTL_CONFIG() {
selected_files=() selected_files=()
existing_files=() existing_files=()
non_existing_files=() non_existing_files=()
REGISTRY_FILES
files=(
"dockerhub registry-hub.yml"
"gcr registry-gcr.yml"
"ghcr registry-ghcr.yml"
"quay registry-quay.yml"
"k8sgcr registry-k8sgcr.yml"
"k8s registry-k8s.yml"
"mcr registry-mcr.yml"
"elastic registry-elastic.yml"
)
while true; do while true; do
echo -e "${YELLOW}-------------------------------------------------${RESET}" REGISTRY_SER_MENU
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
read -e -p "$(INFO "输入序号修改服务对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" ttl_service read -e -p "$(INFO "输入序号修改服务对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" ttl_service
if [[ "$ttl_service" == "0" ]]; then if [[ "$ttl_service" == "0" ]]; then
@@ -2252,7 +2339,7 @@ MODIFY_SERVICE_TTL_CONFIG() {
elif [[ "$ttl_service" =~ ^([1-8]+[[:space:]]*)+$ ]]; then elif [[ "$ttl_service" =~ ^([1-8]+[[:space:]]*)+$ ]]; then
break break
else else
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-8 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
fi fi
done done
@@ -2306,93 +2393,14 @@ MODIFY_SERVICE_TTL_CONFIG() {
fi fi
} }
### 启动新容器 ### 启动新容器
START_NEW_SERVER_CONFIG_FILES() {
while true; do
read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}] > ")" install_docker_reg
case "$install_docker_reg" in
1 )
files=(
"dockerhub reg-docker-hub ${GITRAW}/config/registry-hub.yml"
"gcr reg-gcr ${GITRAW}/config/registry-gcr.yml"
"ghcr reg-ghcr ${GITRAW}/config/registry-ghcr.yml"
"quay reg-quay ${GITRAW}/config/registry-quay.yml"
"k8sgcr reg-k8s-gcr ${GITRAW}/config/registry-k8sgcr.yml"
"k8s reg-k8s ${GITRAW}/config/registry-k8s.yml"
"mcr reg-mcr ${GITRAW}/config/registry-mcr.yml"
"elastic reg-elastic ${GITRAW}/config/registry-elastic.yml"
)
break;;
2 )
files=(
"dockerhub reg-docker-hub ${CNGITRAW}/config/registry-hub.yml"
"gcr reg-gcr ${CNGITRAW}/config/registry-gcr.yml"
"ghcr reg-ghcr ${CNGITRAW}/config/registry-ghcr.yml"
"quay reg-quay ${CNGITRAW}/config/registry-quay.yml"
"k8sgcr reg-k8s-gcr ${CNGITRAW}/config/registry-k8sgcr.yml"
"k8s reg-k8s ${CNGITRAW}/config/registry-k8s.yml"
"mcr reg-mcr ${CNGITRAW}/config/registry-mcr.yml"
"elastic reg-elastic ${CNGITRAW}/config/registry-elastic.yml"
)
break;;
* )
INFO "请输入 ${LIGHT_GREEN}1${RESET} 表示国外 或者 ${LIGHT_YELLOW}2${RESET} 表示大陆";;
esac
done
}
START_NEW_SERVER_CONFIG_FILES() {
while true; do
read -e -p "$(INFO "安装环境确认 [${LIGHT_GREEN}国外输1${RESET} ${LIGHT_YELLOW}国内输2${RESET}] > ")" install_docker_reg
case "$install_docker_reg" in
1 )
files=(
"dockerhub reg-docker-hub ${GITRAW}/config/registry-hub.yml"
"gcr reg-gcr ${GITRAW}/config/registry-gcr.yml"
"ghcr reg-ghcr ${GITRAW}/config/registry-ghcr.yml"
"quay reg-quay ${GITRAW}/config/registry-quay.yml"
"k8sgcr reg-k8s-gcr ${GITRAW}/config/registry-k8sgcr.yml"
"k8s reg-k8s ${GITRAW}/config/registry-k8s.yml"
"mcr reg-mcr ${GITRAW}/config/registry-mcr.yml"
"elastic reg-elastic ${GITRAW}/config/registry-elastic.yml"
)
break;;
2 )
files=(
"dockerhub reg-docker-hub ${CNGITRAW}/config/registry-hub.yml"
"gcr reg-gcr ${CNGITRAW}/config/registry-gcr.yml"
"ghcr reg-ghcr ${CNGITRAW}/config/registry-ghcr.yml"
"quay reg-quay ${CNGITRAW}/config/registry-quay.yml"
"k8sgcr reg-k8s-gcr ${CNGITRAW}/config/registry-k8sgcr.yml"
"k8s reg-k8s ${CNGITRAW}/config/registry-k8s.yml"
"mcr reg-mcr ${CNGITRAW}/config/registry-mcr.yml"
"elastic reg-elastic ${CNGITRAW}/config/registry-elastic.yml"
)
break;;
* )
INFO "请输入 ${LIGHT_GREEN}1${RESET} 表示国外 或者 ${LIGHT_YELLOW}2${RESET} 表示大陆";;
esac
done
}
START_NEW_SERVER_DOWN_CONFIG() { START_NEW_SERVER_DOWN_CONFIG() {
selected_names=() selected_names=()
selected_files=() selected_files=()
selected_containers=() selected_containers=()
echo -e "${YELLOW}-------------------------------------------------${RESET}" REGISTRY_SER_MENU
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" choices_newser read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" choices_newser
while [[ ! "$choices_newser" =~ ^([0-8]+[[:space:]]*)+$ ]]; do while [[ ! "$choices_newser" =~ ^([0-9]+[[:space:]]*)+$ ]]; do
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" choices_newser read -e -p "$(INFO "输入序号下载对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" choices_newser
done done
@@ -2412,7 +2420,7 @@ START_NEW_SERVER_DOWN_CONFIG() {
selected_files+=("$file_url") selected_files+=("$file_url")
wget -NP ${PROXY_DIR}/ $file_url &>/dev/null wget -NP ${PROXY_DIR}/ $file_url &>/dev/null
else else
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-8 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
fi fi
done done
fi fi
@@ -2439,7 +2447,7 @@ START_NEW_SERVER_DOWN_CONFIG() {
START_NEW_DOCKER_SERVICE() { START_NEW_DOCKER_SERVICE() {
if [ -d "${PROXY_DIR}" ]; then if [ -d "${PROXY_DIR}" ]; then
if [ -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" ]; then if [ -f "${PROXY_DIR}/${DOCKER_COMPOSE_FILE}" ]; then
START_NEW_SERVER_CONFIG_FILES CONFIG_FILES
START_NEW_SERVER_DOWN_CONFIG START_NEW_SERVER_DOWN_CONFIG
PROXY_HTTP PROXY_HTTP
INFO "正在启动新的容器服务,请稍等..." INFO "正在启动新的容器服务,请稍等..."
@@ -2622,35 +2630,13 @@ esac
function UNI_DOCKER_SERVICE() { function UNI_DOCKER_SERVICE() {
CHECK_COMPOSE_CMD CHECK_COMPOSE_CMD
RM_SERVICE() { RM_SERVICE() {
selected_containers=() selected_containers=()
REGISTRY_FILES
files=( REGISTRY_SER_MENU
"dockerhub registry-hub.yml"
"gcr registry-gcr.yml"
"ghcr registry-ghcr.yml"
"quay registry-quay.yml"
"k8sgcr registry-k8sgcr.yml"
"k8s registry-k8s.yml"
"mcr registry-mcr.yml"
"elastic registry-elastic.yml"
)
echo -e "${YELLOW}-------------------------------------------------${RESET}"
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
read -e -p "$(INFO "输入序号删除服务和对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" rm_service read -e -p "$(INFO "输入序号删除服务和对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" rm_service
while [[ ! "$rm_service" =~ ^([0-8]+[[:space:]]*)+$ ]]; do while [[ ! "$rm_service" =~ ^([0-9]+[[:space:]]*)+$ ]]; do
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-8 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
read -e -p "$(INFO "输入序号删除服务和对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" rm_service read -e -p "$(INFO "输入序号删除服务和对应配置文件,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" rm_service
done done
@@ -2660,7 +2646,7 @@ if [[ "$rm_service" == "0" ]]; then
else else
selected_services=() selected_services=()
for choice in ${rm_service}; do for choice in ${rm_service}; do
if [[ $choice =~ ^[0-8]+$ ]] && ((choice > 0 && choice <= ${#files[@]})); then if [[ $choice =~ ^[0-9]+$ ]] && ((choice > 0 && choice <= ${#files[@]})); then
file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2) file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2)
service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1) service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1)
@@ -2677,7 +2663,7 @@ else
WARN "配置文件 ${LIGHT_CYAN}${file_name}${RESET} 不存在,${LIGHT_YELLOW}无需删除${RESET}" WARN "配置文件 ${LIGHT_CYAN}${file_name}${RESET} 不存在,${LIGHT_YELLOW}无需删除${RESET}"
fi fi
else else
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-8 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
UNI_DOCKER_SERVICE UNI_DOCKER_SERVICE
return return
fi fi
@@ -2827,32 +2813,11 @@ AUTH_MENU() {
CHECK_REG_AUTH CHECK_REG_AUTH
selected_files=() selected_files=()
selected_services=() selected_services=()
files=( REGISTRY_FILES
"dockerhub registry-hub.yml" REGISTRY_SER_MENU
"gcr registry-gcr.yml"
"ghcr registry-ghcr.yml"
"quay registry-quay.yml"
"k8sgcr registry-k8sgcr.yml"
"k8s registry-k8s.yml"
"mcr registry-mcr.yml"
"elastic registry-elastic.yml"
)
echo -e "${YELLOW}-------------------------------------------------${RESET}"
echo -e "${GREEN}1)${RESET} ${BOLD}docker hub${RESET}"
echo -e "${GREEN}2)${RESET} ${BOLD}gcr${RESET}"
echo -e "${GREEN}3)${RESET} ${BOLD}ghcr${RESET}"
echo -e "${GREEN}4)${RESET} ${BOLD}quay${RESET}"
echo -e "${GREEN}5)${RESET} ${BOLD}k8s-gcr${RESET}"
echo -e "${GREEN}6)${RESET} ${BOLD}k8s${RESET}"
echo -e "${GREEN}7)${RESET} ${BOLD}mcr${RESET}"
echo -e "${GREEN}8)${RESET} ${BOLD}elastic${RESET}"
echo -e "${GREEN}0)${RESET} ${BOLD}exit${RESET}"
echo -e "${YELLOW}-------------------------------------------------${RESET}"
read -e -p "$(INFO "输入序号选择添加认证的服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" auth_service read -e -p "$(INFO "输入序号选择添加认证的服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" auth_service
while [[ ! "$auth_service" =~ ^([0-8]+[[:space:]]*)+$ ]]; do while [[ ! "$auth_service" =~ ^([0-9]+[[:space:]]*)+$ ]]; do
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-8 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
read -e -p "$(INFO "输入序号选择添加认证的服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" auth_service read -e -p "$(INFO "输入序号选择添加认证的服务,${LIGHT_YELLOW}空格分隔${RESET}多个选项 > ")" auth_service
done done
} }
@@ -2948,7 +2913,7 @@ if [[ "$auth_service" == "0" ]]; then
return return
else else
for choice in ${auth_service}; do for choice in ${auth_service}; do
if [[ $choice =~ ^[0-8]+$ ]] && ((choice > 0 && choice <= ${#files[@]})); then if [[ $choice =~ ^[0-9]+$ ]] && ((choice > 0 && choice <= ${#files[@]})); then
file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2) file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2)
service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1) service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1)
selected_files+=("$file_name") selected_files+=("$file_name")
@@ -2960,7 +2925,7 @@ else
fi fi
else else
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-8 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
AUTH_MENU AUTH_MENU
return return
fi fi
@@ -3014,7 +2979,7 @@ if [[ "$auth_service" == "0" ]]; then
return return
else else
for choice in ${auth_service}; do for choice in ${auth_service}; do
if [[ $choice =~ ^[0-8]+$ ]] && ((choice > 0 && choice <= ${#files[@]})); then if [[ $choice =~ ^[0-9]+$ ]] && ((choice > 0 && choice <= ${#files[@]})); then
file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2) file_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f2)
service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1) service_name=$(echo "${files[$((choice - 1))]}" | cut -d' ' -f1)
selected_files+=("$file_name") selected_files+=("$file_name")
@@ -3026,7 +2991,7 @@ else
fi fi
else else
WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-8 ${RESET}序号" WARN "无效输入,请重新输入${LIGHT_YELLOW} 0-9 ${RESET}序号"
AUTH_MENU AUTH_MENU
return return
fi fi
@@ -3257,7 +3222,6 @@ case $ipblack_choice in
esac esac
} }
# 其他工具 # 其他工具
function OtherTools() { function OtherTools() {
echo -e "1) 设置${BOLD}${YELLOW}系统命令${RESET}" echo -e "1) 设置${BOLD}${YELLOW}系统命令${RESET}"
@@ -3285,10 +3249,8 @@ case $main_choice in
sleep 2; main_menu sleep 2; main_menu
;; ;;
esac esac
} }
## 主菜单 ## 主菜单
function main_menu() { function main_menu() {
echo -e "╔════════════════════════════════════════════════════╗" echo -e "╔════════════════════════════════════════════════════╗"