@@ -1,22 +1,61 @@
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					#!/bin/bash 
 
					 
					 
					 
					#!/bin/bash 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## Author: SuperManito 
 
					 
					 
					 
					## Author: SuperManito 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## Modified: 2023-05-02  
 
					 
					 
					 
					## Modified: 2023-05-1 0 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					## License: MIT 
 
					 
					 
					 
					## License: MIT 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## Github: https://github.com/SuperManito/LinuxMirrors 
 
					 
					 
					 
					## Github: https://github.com/SuperManito/LinuxMirrors 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					## Website: https://linuxmirrors.cn 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					function  AuthorSignature( )  { 
 
					 
					 
					 
					## Docker DE 软件源列表 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e " \n $COMPLETE  脚本执行结束\n  " 
 
					 
					 
					 
					# 国内格式:"软件源名称@软件源地址 "
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;35;95m┌─\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m─┐\033[0m'  
 
					 
					 
					 
					mirror_list_docker_ce = ( 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;31;91m│\033[0m   \033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_\033[0m                       \033[0;1;34;94m__\033[0m  \033[0;1;31;91m__\033[0;1;33;93m_\033[0m            \033[0;1;33;93m_\033[0m \033[0;1;32;92m_\033[0;1;36;96m_\033[0m      \033[0;1;31;91m│\033[0m' 
 
					 
					 
					 
					    "阿里云@mirrors.aliyun.com/docker-ce" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;33;93m│\033[0m  \033[0;1;32;92m/\033[0m \033[0;1;36;96m_\033[0;1;34;94m__\033[0;1;35;95m/_\033[0;1;31;91m_\033[0m  \033[0;1;33;93m_\033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_\033[0m  \033[0;1;35;95m_\033[0;1;31;91m__\033[0m  \033[0;1;32;92m__\033[0;1;36;96m__\033[0;1;34;94m_/\033[0m  \033[0;1;31;91m|/\033[0m  \033[0;1;32;92m/_\033[0;1;36;96m__\033[0m \033[0;1;34;94m_\033[0;1;35;95m__\033[0;1;31;91m__\033[0m  \033[0;1;32;92m(_\033[0;1;36;96m)\033[0m \033[0;1;34;94m/_\033[0;1;35;95m__\033[0;1;31;91m__\033[0m \033[0;1;33;93m│\033[0m' 
 
					 
					 
					 
					    "腾讯云@mirrors.tencent.com/docker-ce" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;32;92m│\033[0m  \033[0;1;36;96m\\\033[0;1;34;94m__\033[0m \033[0;1;35;95m\\\033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m__\033[0m \033[0;1;35;95m\\\033[0;1;31;91m/\033[0m \033[0;1;33;93m_\033[0m \033[0;1;32;92m\/\033[0m \033[0;1;36;96m_\033[0;1;34;94m__\033[0;1;35;95m/\033[0m \033[0;1;31;91m/|\033[0;1;33;93m_/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m_\033[0;1;34;94m_\033[0m \033[0;1;35;95m`/\033[0m \033[0;1;31;91m_\033[0;1;33;93m_\033[0m \033[0;1;32;92m\/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m_\033[0;1;35;95m_/\033[0m \033[0;1;31;91m_\033[0;1;33;93m_\033[0m \033[0;1;32;92m\│\033[0m' 
 
					 
					 
					 
					    "华为云@repo.huaweicloud.com/docker-ce" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;36;96m│\033[0m \033[0;1;34;94m__\033[0;1;35;95m_/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0;1;32;92m_/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0;1;35;95m_/\033[0m \033[0;1;31;91m/\033[0m  \033[0;1;32;92m__\033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0m  \033[0;1;35;95m/\033[0m \033[0;1;31;91m/\033[0m  \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/_\033[0;1;35;95m/\033[0m \033[0;1;31;91m/\033[0m \033[0;1;33;93m/\033[0m \033[0;1;32;92m/\033[0m \033[0;1;36;96m/\033[0m \033[0;1;34;94m/\033[0m \033[0;1;35;95m/_\033[0;1;31;91m/\033[0m \033[0;1;33;93m/_\033[0;1;32;92m/\033[0m \033[0;1;36;96m/│\033[0m' 
 
					 
					 
					 
					    "微软云@mirror.azure.cn/docker-ce" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;34;94m│/\033[0;1;35;95m__\033[0;1;31;91m__\033[0;1;33;93m/\\\033[0;1;32;92m__\033[0;1;36;96m,_\033[0;1;34;94m/\033[0m \033[0;1;35;95m._\033[0;1;31;91m__\033[0;1;33;93m/\\\033[0;1;32;92m__\033[0;1;36;96m_/\033[0;1;34;94m_/\033[0m  \033[0;1;31;91m/_\033[0;1;33;93m/\033[0m  \033[0;1;32;92m/\033[0;1;36;96m_/\033[0;1;34;94m\_\033[0;1;35;95m_,\033[0;1;31;91m_/\033[0;1;33;93m_/\033[0m \033[0;1;32;92m/\033[0;1;36;96m_/\033[0;1;34;94m_/\033[0;1;35;95m\_\033[0;1;31;91m_/\033[0;1;33;93m\_\033[0;1;32;92m__\033[0;1;36;96m_/\033[0m \033[0;1;34;94m│\033[0m' 
 
					 
					 
					 
					    "网易@mirrors.163.com/docker-ce" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;35;95m│\033[0m          \033[0;1;34;94m/\033[0;1;35;95m_/\033[0m                                               \033[0;1;35;95m│\033[0m' 
 
					 
					 
					 
					    "清华大学@mirrors.tuna.tsinghua.edu.cn/docker-ce" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '\033[0;1;31;91m└─\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m─┘\033[0m\n' 
 
					 
					 
					 
					    "北京大学@mirrors.pku.edu.cn/docker-ce" 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "南京大学@mirrors.nju.edu.cn/docker-ce" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "上海交通大学@mirror.sjtu.edu.cn/docker-ce" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "中国科学技术大学@mirrors.ustc.edu.cn/docker-ce" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "中国科学院软件研究所@mirror.iscas.ac.cn/docker-ce" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "官方@download.docker.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e " \033[1;34m官方网站\033[0m https://linuxmirrors.cn\n"  
 
					 
					 
					 
					## Docker Hub 镜像仓库列表 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					# 国内格式:"软件源名称@软件源地址" 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					mirror_list_registry = ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(杭州)@registry.cn-hangzhou.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(上海)@registry.cn-shanghai.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(青岛)@registry.cn-qingdao.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(北京)@registry.cn-beijing.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(张家口)@registry.cn-zhangjiakou.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(呼和浩特)@registry.cn-huhehaote.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(乌兰察布)@registry.cn-wulanchabu.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(深圳)@registry.cn-shenzhen.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(河源)@registry.cn-heyuan.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(广州)@registry.cn-guangzhou.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(成都)@registry.cn-chengdu.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "腾讯云@mirror.ccs.tencentyun.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "微软云@dockerhub.azk8s.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "网易@hub-mirror.c.163.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "上海交通大学@mirror.sjtu.edu.cn/docs/docker-registry" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "道客 DaoCloud@f1361db2.m.daocloud.io" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(香港)@registry.cn-hongkong.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(日本-东京)@registry.ap-northeast-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(新加坡)@registry.ap-southeast-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(澳大利亚-悉尼)@registry.ap-southeast-2.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(马来西亚-吉隆坡)@registry.ap-southeast-3.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(印度尼西亚-雅加达)@registry.ap-southeast-5.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(印度-孟买)@registry.ap-south-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(德国-法兰克福)@registry.eu-central-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(英国-伦敦)@registry.eu-west-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(美国西部-硅谷)@registry.us-west-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(美国东部-弗吉尼亚)@registry.us-east-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "阿里云(阿联酋-迪拜)@registry.me-east-1.aliyuncs.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "谷歌云@gcr.io" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    "官方@registry.hub.docker.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 定义系统判定变量 
 
					 
					 
					 
					## 定义系统判定变量 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					SYSTEM_DEBIAN = "Debian" 
 
					 
					 
					 
					SYSTEM_DEBIAN = "Debian" 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -27,19 +66,20 @@ SYSTEM_RHEL="RedHat"
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					SYSTEM_CENTOS = "CentOS" 
 
					 
					 
					 
					SYSTEM_CENTOS = "CentOS" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					SYSTEM_CENTOS_STREAM = "CentOS Stream" 
 
					 
					 
					 
					SYSTEM_CENTOS_STREAM = "CentOS Stream" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					SYSTEM_ROCKY = "Rocky" 
 
					 
					 
					 
					SYSTEM_ROCKY = "Rocky" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					SYSTEM_ALMALINUX = "AlmaLinux" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					SYSTEM_FEDORA = "Fedora" 
 
					 
					 
					 
					SYSTEM_FEDORA = "Fedora" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					SYSTEM_OPENCLOUDOS = "OpenCloudOS" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					SYSTEM_OPENEULER = "openEuler" 
 
					 
					 
					 
					SYSTEM_OPENEULER = "openEuler" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 定义目录和文件 
 
					 
					 
					 
					## 定义目录和文件 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					File_LinuxRelease = /etc/os-release
 
					 
					 
					 
					File_LinuxRelease = /etc/os-release
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					File_RedHatRelease = /etc/redhat-release
 
					 
					 
					 
					File_RedHatRelease = /etc/redhat-release
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					File_OpenCloudOSRelease = /etc/opencloudos-release
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					File_openEulerRelease = /etc/openEuler-release
 
					 
					 
					 
					File_openEulerRelease = /etc/openEuler-release
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					File_DebianVersion = /etc/debian_version
 
					 
					 
					 
					File_DebianVersion = /etc/debian_version
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					File_DebianSourceList = /etc/apt/sources.list
 
					 
					 
					 
					File_DebianSourceList = /etc/apt/sources.list
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					Dir_DebianExtendSource = /etc/apt/sources.list.d
 
					 
					 
					 
					Dir_DebianExtendSource = /etc/apt/sources.list.d
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					Dir_RedHat Repos = /etc/yum.repos.d
 
					 
					 
					 
					Dir_Yum Repos = /etc/yum.repos.d
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					Dir_openEulerRepos = /etc/yum.repos.d
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					Dir_openSUSERepos = /etc/zypp/repos.d
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 定义 Docker 相关变量 
 
					 
					 
					 
					## 定义 Docker 相关变量 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					DockerDir = /etc/docker
 
					 
					 
					 
					DockerDir = /etc/docker
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -62,6 +102,29 @@ WARN='[\033[33mWARN\033[0m]'
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ERROR = '[\033[31mERROR\033[0m]' 
 
					 
					 
					 
					ERROR = '[\033[31mERROR\033[0m]' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					WORKING = '[\033[34m*\033[0m]' 
 
					 
					 
					 
					WORKING = '[\033[34m*\033[0m]' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					function  StartTitle( )  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    [ [  -z " ${ SOURCE } "  ||  -z " ${ SOURCE_REGISTRY } "  ] ]  &&  clear
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    echo  -e ' +-----------------------------------+' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    echo  -e " | \033[0;1;35;95m⡇\033[0m  \033[0;1;33;93m⠄\033[0m \033[0;1;32;92m⣀⡀\033[0m \033[0;1;36;96m⡀\033[0;1;34;94m⢀\033[0m \033[0;1;35;95m⡀⢀\033[0m \033[0;1;31;91m⡷\033[0;1;33;93m⢾\033[0m \033[0;1;32;92m⠄\033[0m \033[0;1;36;96m⡀⣀\033[0m \033[0;1;34;94m⡀\033[0;1;35;95m⣀\033[0m \033[0;1;31;91m⢀⡀\033[0m \033[0;1;33;93m⡀\033[0;1;32;92m⣀\033[0m \033[0;1;36;96m⢀⣀\033[0m |" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    echo  -e " | \033[0;1;31;91m⠧\033[0;1;33;93m⠤\033[0m \033[0;1;32;92m⠇\033[0m \033[0;1;36;96m⠇⠸\033[0m \033[0;1;34;94m⠣\033[0;1;35;95m⠼\033[0m \033[0;1;31;91m⠜⠣\033[0m \033[0;1;33;93m⠇\033[0;1;32;92m⠸\033[0m \033[0;1;36;96m⠇\033[0m \033[0;1;34;94m⠏\033[0m  \033[0;1;35;95m⠏\033[0m  \033[0;1;33;93m⠣⠜\033[0m \033[0;1;32;92m⠏\033[0m  \033[0;1;34;94m⠭⠕\033[0m |" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    echo  -e ' +-----------------------------------+' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    echo  -e '  欢迎使用 Docker Engine 一键安装脚本' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					## 报错退出 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					function  Output_Error( )  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    [  " $1 "  ]  &&  echo  -e " \n $ERROR   $1 \n " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    exit  1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					## 基础环境判断 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					function  PermissionJudgment( )  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if  [  $UID  -ne 0  ] ;  then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        echo  -e " \n $ERROR  权限不足,请使用 Root 用户运行本脚本\n " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        exit  1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 系统判定变量 
 
					 
					 
					 
					## 系统判定变量 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					function  EnvJudgment( )  { 
 
					 
					 
					 
					function  EnvJudgment( )  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 定义系统名称 
 
					 
					 
					 
					    ## 定义系统名称 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -72,28 +135,43 @@ function EnvJudgment() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    SYSTEM_VERSION_NUMBER = " $( cat $File_LinuxRelease  |  grep -E "^VERSION_ID="  |  awk -F '='  '{print$2}'  |  sed "s/[\'\"]//g" ) " 
 
					 
					 
					 
					    SYSTEM_VERSION_NUMBER = " $( cat $File_LinuxRelease  |  grep -E "^VERSION_ID="  |  awk -F '='  '{print$2}'  |  sed "s/[\'\"]//g" ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 定义系统ID 
 
					 
					 
					 
					    ## 定义系统ID 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    SYSTEM_ID = " $( cat $File_LinuxRelease  |  grep -E "^ID="  |  awk -F '='  '{print$2}'  |  sed "s/[\'\"]//g" ) " 
 
					 
					 
					 
					    SYSTEM_ID = " $( cat $File_LinuxRelease  |  grep -E "^ID="  |  awk -F '='  '{print$2}'  |  sed "s/[\'\"]//g" ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 判定当前系统派系(  Debian/RedHat/openEuler)  
 
					 
					 
					 
					    ## 判定当前系统派系(  Debian/RedHat/openEuler/OpenCloudOS/openSUSE )  
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  [  -s $File_RedHatRelease   ] ;  then 
 
					 
					 
					 
					    if  [  -s $File_DebianVersion   ] ;  then 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_FACTIONS = " ${ SYSTEM_REDHAT } " 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    elif  [  -s $File_DebianVersion  ] ;  then 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_FACTIONS = " ${ SYSTEM_DEBIAN } " 
 
					 
					 
					 
					        SYSTEM_FACTIONS = " ${ SYSTEM_DEBIAN } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    elif  [  -s $File_OpenCloudOSRelease  ] ;  then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        # OpenCloudOS 判断优先级需要高于 RedHat,  因为8版本基于红帽而9版本不是 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SYSTEM_FACTIONS = " ${ SYSTEM_OPENCLOUDOS } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    elif  [  -s $File_openEulerRelease  ] ;  then 
 
					 
					 
					 
					    elif  [  -s $File_openEulerRelease  ] ;  then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_FACTIONS = " ${ SYSTEM_OPENEULER } " 
 
					 
					 
					 
					        SYSTEM_FACTIONS = " ${ SYSTEM_OPENEULER } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    elif  [  -s $File_RedHatRelease  ] ;  then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SYSTEM_FACTIONS = " ${ SYSTEM_REDHAT } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    else 
 
					 
					 
					 
					    else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e " \n $ERROR  无法判断当前运行环境,请先确认本脚本针对当前操作系统是否适配!\n  "
 
					 
					 
					 
					        Output_Error "无法判断当前运行环境,当前系统不在本脚本的支持范围内 " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        exit 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    fi 
 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 判定系统名称、版本、版本号 
 
					 
					 
					 
					    ## 判定系统名称、版本、版本号 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    case  " ${ SYSTEM_FACTIONS } "  in
 
					 
					 
					 
					    case  " ${ SYSTEM_FACTIONS } "  in
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_JUDGMENT = $( lsb_release -is) 
 
					 
					 
					 
					        if  [  ! -x /usr/bin/lsb_release ] ;  then 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_VERSION = $(  lsb_ release -cs)  
 
					 
					 
					 
					            apt-get install -y  lsb- release
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            if  [  $?  -ne 0  ] ;  then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                Output_Error "lsb-release 软件包安装失败\n        本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统,因为正常情况下系统会自带该软件包,请自行安装后重新执行脚本!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SYSTEM_JUDGMENT = " $( lsb_release -is) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SYSTEM_VERSION_CODENAME = " $( lsb_release -cs) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_REDHAT } " ) 
 
					 
					 
					 
					    " ${ SYSTEM_REDHAT } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_JUDGMENT = " $( cat $File_RedHatRelease  |  awk -F ' '  '{printf$1}' ) " 
 
					 
					 
					 
					        SYSTEM_JUDGMENT = " $( cat $File_RedHatRelease  |  awk -F ' '  '{printf$1}' ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ## Red Hat Enterprise Linux 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        cat $File_RedHatRelease  |  grep -q " ${ SYSTEM_RHEL } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        [  $?  -eq 0  ]  &&  SYSTEM_JUDGMENT = " ${ SYSTEM_RHEL } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ## CentOS Stream 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        cat $File_RedHatRelease  |  grep -q " ${ SYSTEM_CENTOS_STREAM } " 
 
					 
					 
					 
					        cat $File_RedHatRelease  |  grep -q " ${ SYSTEM_CENTOS_STREAM } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        [  $?  -eq 0  ]  &&  SYSTEM_JUDGMENT = " ${ SYSTEM_CENTOS_STREAM } " 
 
					 
					 
					 
					        [  $?  -eq 0  ]  &&  SYSTEM_JUDGMENT = " ${ SYSTEM_CENTOS_STREAM } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    " ${ SYSTEM_OPENCLOUDOS } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SYSTEM_JUDGMENT = " ${ SYSTEM_OPENCLOUDOS } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					    " ${ SYSTEM_OPENEULER } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_JUDGMENT = " ${ SYSTEM_OPENEULER } " 
 
					 
					 
					 
					        SYSTEM_JUDGMENT = " ${ SYSTEM_OPENEULER } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -117,9 +195,7 @@ function EnvJudgment() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SOURCE_ARCH = "armhf" 
 
					 
					 
					 
					        SOURCE_ARCH = "armhf" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    i386 |  i686) 
 
					 
					 
					 
					    i386 |  i686) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_ARCH = "x86_32 "
 
					 
					 
					 
					        Output_Error "Docker Engine 不支持安装在 x86_32 架构的环境上! " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e " \n ${ RED } ---------- Docker Engine 不支持安装在 x86_32 架构的环境上! ---------- ${ PLAIN } \n " 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        exit 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    *) 
 
					 
					 
					 
					    *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYSTEM_ARCH = $( uname -m) 
 
					 
					 
					 
					        SYSTEM_ARCH = $( uname -m) 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -128,11 +204,22 @@ function EnvJudgment() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 定义软件源分支名称 
 
					 
					 
					 
					    ## 定义软件源分支名称 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    case  " ${ SYSTEM_JUDGMENT } "  in
 
					 
					 
					 
					    case  " ${ SYSTEM_JUDGMENT } "  in
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_RHEL  } "  |  " ${ SYSTEM_CENTOS_STREAM  } "  |  " ${ SYSTEM_ROCKY  } "  |  " ${ SYSTEM_OPENEULER  } " ) 
 
					 
					 
					 
					    " ${ SYSTEM_CENTOS  } "  |  " ${ SYSTEM_DEBIAN  } "  |  " ${ SYSTEM_UBUNTU  } "  |  " ${ SYSTEM_FEDORA  } " ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SOURCE_BRANCH = " $( echo  " ${ SYSTEM_JUDGMENT ,, } "  |  sed "s/ /-/g" ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    " ${ SYSTEM_CENTOS_STREAM } "  |  " ${ SYSTEM_ALMALINUX } "  |  " ${ SYSTEM_ROCKY } "  |  " ${ SYSTEM_OPENCLOUDOS } "  |  " ${ SYSTEM_OPENEULER } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SOURCE_BRANCH = "centos" 
 
					 
					 
					 
					        SOURCE_BRANCH = "centos" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    " ${ SYSTEM_RHEL } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SOURCE_BRANCH = "rhel" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    " ${ SYSTEM_KALI } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        # Kali 使用 Debian 12 的 docker ce 源 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SOURCE_BRANCH = "debian" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        SYSTEM_VERSION_CODENAME = "bullseye" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    *) 
 
					 
					 
					 
					    *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SOURCE_BRANCH = " $( echo  " ${ SYSTEM_JUDGMENT ,, } "  |  sed "s/ /-/g" )  "
 
					 
					 
					 
					        Output_Error "当前系统不在本脚本的支持范围内 " 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 定义软件源同步/更新文字 
 
					 
					 
					 
					    ## 定义软件源同步/更新文字 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -140,32 +227,162 @@ function EnvJudgment() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        SYNC_TXT = "更新" 
 
					 
					 
					 
					        SYNC_TXT = "更新" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_REDHAT } "  |  " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					    * ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        SYNC_TXT = "同步" 
 
					 
					 
					 
					        SYNC_TXT = "同步" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					        ; ; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 基础环境判断 
 
					 
					 
					 
					function  ChooseMirrors( )  { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					function  PermissionJudgment( )  { 
 
					 
					 
					 
					    ## 打印软件源列表  
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  [  $UID  -ne 0  ] ;  then 
 
					 
					 
					 
					    function  PrintMirrorsList( )  { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e " \n $ERROR  权限不足,请使用 Root 用户运行本脚本\n " 
 
					 
					 
					 
					        local  tmp_mirror_name tmp_mirror_url arr_num default_mirror_name_length tmp_mirror_name_length tmp_spaces_nums a i j
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        exit  1 
 
					 
					 
					 
					        ## 计算字符串长度 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        function  StringLength( )  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            local  text = $1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            echo  " ${# text } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        echo  -e '' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local  list_arr = ( ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local  list_arr_sum = " $( eval  echo  \$ { #$1[@]})" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        for  ( ( a  =  0;  a < $list_arr_sum ;  a++) ); do 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            list_arr[ $a ]= " $( eval  echo  \$ { $1 [ a] } ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if [ -x /usr/bin/printf ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            for ((i = 0; i <  ${# list_arr [@] } ; i++)); do 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                tmp_mirror_name= $( echo  " ${ list_arr [i] } "  |  awk -F '@'  '{print$1}' )  # 软件源名称 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                # tmp_mirror_url= $( echo  " ${ list_arr [i] } "  |  awk -F '@'  '{print$2}' )  # 软件源地址 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                arr_num= $(( i +  1 )) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                default_mirror_name_length= ${ 2 :- "30" }  # 默认软件源名称打印长度 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ## 补齐长度差异(  中文的引号在等宽字体中占1格而非2格)  
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                [[  $( echo  " ${ tmp_mirror_name } "  |  grep -c "“" )  -gt 0 ]] && let default_mirror_name_length+= $( echo  " ${ tmp_mirror_name } "  |  grep -c "“" ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                [[  $( echo  " ${ tmp_mirror_name } "  |  grep -c "”" )  -gt 0 ]] && let default_mirror_name_length+= $( echo  " ${ tmp_mirror_name } "  |  grep -c "”" ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                [[  $( echo  " ${ tmp_mirror_name } "  |  grep -c "‘  " )  -gt 0 ]] && let default_mirror_name_length+= $( echo  " ${ tmp_mirror_name } "  |  grep -c "‘  " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                [[  $( echo  " ${ tmp_mirror_name } "  |  grep -c "’  " )  -gt 0 ]] && let default_mirror_name_length+= $( echo  " ${ tmp_mirror_name } "  |  grep -c "’  " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                # 非一般字符长度 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                tmp_mirror_name_length= $( StringLength $( echo  " ${ tmp_mirror_name } "  |  sed "s| ||g"  |  sed "s|[0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·]||g;" ) ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ## 填充空格 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                tmp_spaces_nums= $(( $(( $default_mirror_name_length  -  ${ tmp_mirror_name_length }  -  $( StringLength " ${ tmp_mirror_name } " ) ))  /  2 )) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                for ((j = 1; j <=  ${ tmp_spaces_nums } ; j++)); do 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    tmp_mirror_name= " ${ tmp_mirror_name }  " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                printf "  ❖  %-$(( $default_mirror_name_length  +  ${ tmp_mirror_name_length } )) s %4s\n " " ${ tmp_mirror_name } " " $arr_num ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            for ((i = 0; i <  ${# list_arr [@] } ; i++)); do 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                tmp_mirror_name= $( echo  " ${ list_arr [i] } "  |  awk -F '@'  '{print$1}' )  # 软件源名称 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                tmp_mirror_url= $( echo  " ${ list_arr [i] } "  |  awk -F '@'  '{print$2}' )   # 软件源地址 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                arr_num= $(( i +  1 )) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                echo -e  "  ❖  $arr_num . ${ tmp_mirror_url }  |  ${ tmp_mirror_name } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    function Title() { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local system_name=" ${ SYSTEM_PRETTY_NAME :- " ${ SYSTEM_NAME }   ${ SYSTEM_VERSION_NUMBER } " } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local arch=" " ${ DEVICE_ARCH } " " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local date=" $( date "+%Y-%m-%d %H:%M:%S" ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local timezone=" $( timedatectl status 2>/dev/null |  grep "Time zone"  |  awk -F ':'  '{print$2}'  |  awk -F ' '  '{print$1}' ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        echo -e '' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        echo -e "  运行环境 ${ BLUE } ${ system_name }  ${ arch } ${ PLAIN } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        echo -e "  系统时间 ${ BLUE } ${ date }  ${ timezone } ${ PLAIN } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    Title 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if [[ -z " ${ INSTALL_LATESTED_DOCKER } "  ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ## 是否手动选择安装版本 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local CHOICE_A= $( echo  -e " \n ${ BOLD } └─ 是否安装最新版本的 Docker Engine? [Y/n]  ${ PLAIN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        read -p  " ${ CHOICE_A } " INPUT 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        [[ -z " ${ INPUT } "  ]] && INPUT=Y 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        case  $INPUT  in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        [Yy] | [Yy][Ee][Ss]) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            INSTALL_LATESTED_DOCKER= " true" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        [Nn] | [Nn][Oo]) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ## 安装旧版本只有官方仓库有 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            INSTALL_LATESTED_DOCKER=" false" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            SOURCE=" download.docker.com" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            INSTALL_LATESTED_DOCKER=" true" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            echo -e " \n $WARN  输入错误,默认安装最新版本!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    local mirror_list_name 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if [[ -z " ${ SOURCE } " ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local mirror_list_name=" mirror_list_docker_ce" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        PrintMirrorsList " ${ mirror_list_name } "  38 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local CHOICE_B= $( echo  -e " \n ${ BOLD } └─ 请选择并输入你想使用的 Docker CE 源 [ 1- $( eval  echo  \$ { #$mirror_list_name[@]}) ]:  ${PLAIN}") 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        while  true;  do 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            read  -p " ${ CHOICE_B } "  INPUT
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            case  " ${ INPUT } "  in
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            [ 1-9]  |  [ 1-9] [ 0-9]  |  [ 1-9] [ 0-9] [ 0-9] ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                local tmp_source= " $( eval  echo  \$ { ${ mirror_list_name } [ $(( $INPUT  -  1 )) ] } ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                if [[ -z " ${ tmp_source } " ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    echo -e " \n $WARN  请输入有效的数字序号!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    SOURCE=" $( eval  echo  \$ { ${ mirror_list_name } [ $(( $INPUT  -  1 )) ] }  |  awk -F '@'  '{print$2}' ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    # echo " ${ SOURCE } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    # exit 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    break 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                echo -e " \n $WARN  请输入数字序号以选择你想使用的软件源!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if [[ -z " ${ SOURCE_REGISTRY } " ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        mirror_list_name=" mirror_list_registry" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        PrintMirrorsList " ${ mirror_list_name } "  39 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local CHOICE_C= $( echo  -e " \n ${ BOLD } └─ 请选择并输入你想使用的 Docker Hub 源 [ 1- $( eval  echo  \$ { #$mirror_list_name[@]}) ]:  ${PLAIN}") 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        while  true;  do 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            read  -p " ${ CHOICE_C } "  INPUT
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            case  " ${ INPUT } "  in
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            [ 1-9]  |  [ 1-9] [ 0-9]  |  [ 1-9] [ 0-9] [ 0-9] ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                local tmp_source= " $( eval  echo  \$ { ${ mirror_list_name } [ $(( $INPUT  -  1 )) ] } ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                if [[ -z " ${ tmp_source } " ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    echo -e " \n $WARN  请输入有效的数字序号!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    SOURCE_REGISTRY=" $( eval  echo  \$ { ${ mirror_list_name } [ $(( $INPUT  -  1 )) ] }  |  awk -F '@'  '{print$2}' ) " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    # echo " ${ SOURCE_REGISTRY } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    # exit 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    break 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                echo -e " \n $WARN  请输入数字序号以选择你想使用的软件源!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    fi 
 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 关闭防火墙和SELinux 
 
					 
					 
					 
					## 关闭防火墙和SELinux 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					function CloseFirewall() { 
 
					 
					 
					 
					function CloseFirewall() { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    local  SelinuxConf = /etc/selinux/config
 
					 
					 
					 
					     function Main() { 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        local SelinuxConfig=/etc/selinux/config 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        systemctl disable --now firewalld >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        [ -s  $SelinuxConfig  ] && sed -i  " s/SELINUX= enforcing/SELINUX= disabled/g"   $SelinuxConfig  && setenforce 0 >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if [ -x /usr/bin/systemctl ]; then 
 
					 
					 
					 
					    if [ -x /usr/bin/systemctl ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					         if [ [   $( systemctl is-active firewalld)  = =  "active"  ] ] ;   then 
 
					 
					 
					 
					         if [[  " $( systemctl is-active firewalld) " == " active" ]];  then
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            if [[ " ${ CLOSE_FIREWALL } " == " true" ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                Main 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            elif [[ -z " ${ CLOSE_FIREWALL } "  ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 是否关闭防火墙和 SELinux ? [Y/n]  ${ PLAIN } " ) 
 
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 是否关闭防火墙和 SELinux ? [Y/n]  ${ PLAIN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                read -p  " ${ CHOICE } " INPUT 
 
					 
					 
					 
					                read -p  " ${ CHOICE } " INPUT 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            [   -z ${ INPUT }  ]  &&   INPUT=  Y
 
					 
					 
					 
					                 [[  -z " ${ INPUT } " ]] &&  INPUT= Y
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					             case  $ INPUT  in
 
					 
					 
					 
					                 case " ${  INPUT} "  in
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                [Yy] | [Yy][Ee][Ss]) 
 
					 
					 
					 
					                [Yy] | [Yy][Ee][Ss]) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                systemctl disable --now firewalld >/dev/null 2>& 1  
 
					 
					 
					 
					                     Main 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                [  -s $SelinuxConf  ]  &&  sed -i "s/SELINUX=enforcing/SELINUX=disabled/g"  $SelinuxConfig  &&  setenforce 0  >/dev/null 2>& 1 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    ;; 
 
					 
					 
					 
					                    ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                [Nn] | [Nn][Oo]) ;; 
 
					 
					 
					 
					                [Nn] | [Nn][Oo]) ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                *) 
 
					 
					 
					 
					                *) 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -174,50 +391,51 @@ function CloseFirewall() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                esac 
 
					 
					 
					 
					                esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            fi 
 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        fi 
 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 安装环境包 
 
					 
					 
					 
					## 安装环境包 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 function  InstallationEnvironment( )  { 
 
					 
					 
					 
					 function EnvironmentInstall() { 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    ## 删除原有源 
 
					 
					 
					 
					    ## 删除原有源 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        sed -i '/docker-ce/d'  $File_DebianSourceList 
 
					 
					 
					 
					        sed -i '/docker-ce/d'  $File_DebianSourceList 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        rm -rf  $Dir_DebianExtendSource /docker.list 
 
					 
					 
					 
					        rm -rf  $Dir_DebianExtendSource /docker.list 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_REDHAT } ")  
 
					 
					 
					 
					     " ${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " | " ${ SYSTEM_OPENEULER } " )  
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        rm -rf $Dir_RedHat Repos /*docker*.repo
 
					 
					 
					 
					         rm -rf $Dir_Yum Repos  /*docker*.repo
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        rm -rf $Dir_openEulerRepos /*docker*.repo
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					     echo  -e " $WORKING   开始${ SYNC_TXT }  软件源...\n" 
 
					 
					 
					 
					     echo -e " \n $WORKING  开始${ SYNC_TXT } 软件源... \n" 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } ") 
 
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } ") 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        apt-get update 
 
					 
					 
					 
					        apt-get update 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					     "${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					     "${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } " ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        yum makecache 
 
					 
					 
					 
					        yum makecache 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    VERIFICATION_SOURCESYNC= $? 
 
					 
					 
					 
					    VERIFICATION_SOURCESYNC= $? 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if [  ${ VERIFICATION_SOURCESYNC }  -ne 0 ]; then 
 
					 
					 
					 
					    if [  ${ VERIFICATION_SOURCESYNC }  -ne 0 ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e " \n $ERROR   软件源${ SYNC_TXT }  出错,请先确保软件包管理工具可用!\n " 
 
					 
					 
					 
					         Output_Error  " 软件源${ SYNC_TXT } 出错,请先确保软件包管理工具可用!" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        exit 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    fi 
 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo -e " \n $COMPLETE  软件源${ SYNC_TXT } 结束\n " 
 
					 
					 
					 
					    echo -e " \n $COMPLETE  软件源${ SYNC_TXT } 结束\n " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } ") 
 
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } ") 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common 
 
					 
					 
					 
					        apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					     "${ SYSTEM_REDHAT } ")  
 
					 
					 
					 
					     "${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENEULER } " | " ${ SYSTEM_OPENCLOUDOS } " )  
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        # 注:红帽 8 版本才发布了 dnf 包管理工具,为了兼容性而优先选择安装 dnf-utils 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        case  ${ SYSTEM_VERSION_NUMBER : 0 : 1 }  in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        7) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            yum install -y yum-utils device-mapper-persistent-data lvm2 
 
					 
					 
					 
					            yum install -y yum-utils device-mapper-persistent-data lvm2 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ;; 
 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					         *) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        dnf  install -y dnf-utils device-mapper-persistent-data lvm2
 
					 
					 
					 
					             yum  install -y dnf-utils device-mapper-persistent-data lvm2
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 卸载旧版本的 Docker Engine 
 
					 
					 
					 
					## 卸载旧版本的 Docker Engine 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -229,7 +447,7 @@ function RemoveOldVersion() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        apt-get remove -y docker-ce docker-ce-cli containerd.io runc >/dev/null 2>&1 
 
					 
					 
					 
					        apt-get remove -y docker-ce docker-ce-cli containerd.io runc >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        apt-get autoremove -y >/dev/null 2>&1 
 
					 
					 
					 
					        apt-get autoremove -y >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					     "${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } ")  
 
					 
					 
					 
					     "${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } ")  
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        yum remove -y docker-ce docker-ce-cli containerd.io podman* runc >/dev/null 2>&1 
 
					 
					 
					 
					        yum remove -y docker-ce docker-ce-cli containerd.io podman* runc >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        yum autoremove -y >/dev/null 2>&1 
 
					 
					 
					 
					        yum autoremove -y >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -240,30 +458,31 @@ function RemoveOldVersion() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					function ConfigureDockerCEMirror() { 
 
					 
					 
					 
					function ConfigureDockerCEMirror() { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
					 
					 
					 
					    case " ${ SYSTEM_FACTIONS } " in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  [  " ${ SYSTEM_JUDGMENT } "  =  ${ SYSTEM_KALI }  ] ;  then 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            curl -fsSL https://${ SOURCE } /linux/debian/gpg |  apt-key add - >/dev/null 2>& 1 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        curl -fsSL https:// ${ SOURCE } /linux/ ${ SOURCE_BRANCH } /gpg | apt-key add - >/dev/null 2>&1 
 
					 
					 
					 
					        curl -fsSL https:// ${ SOURCE } /linux/ ${ SOURCE_BRANCH } /gpg | apt-key add - >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        fi 
 
					 
					 
					 
					         echo  " deb [ arch = ${ SOURCE_ARCH } ]  https://${ SOURCE } /linux/${ SOURCE_BRANCH }  ${ SYSTEM_VERSION_CODENAME }  stable"  | tee  $Dir_DebianExtendSource /docker.list >/dev/null 2>&1 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  " deb [arch= ${ SOURCE_ARCH } ] https:// ${ SOURCE } /linux/ ${ SOURCE_BRANCH }   ${ SYSTEM_VERSION }  stable "  |  tee $Dir_DebianExtendSource /docker.list >/dev/null 2>& 1 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  [  " ${ SYSTEM_JUDGMENT } "  =  ${ SYSTEM_KALI }  ] ;  then 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            sed -i " s/ ${ SYSTEM_VERSION } /buster/g "  $Dir_DebianExtendSource /docker.list
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            sed -i " s/ ${ SOURCE_BRANCH } /debian/g "  $Dir_DebianExtendSource /docker.list
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        fi 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        apt-get update 
 
					 
					 
					 
					        apt-get update 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					     " ${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } " ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        yum-config-manager -y --add-repo https:// ${ SOURCE } /linux/ ${ SOURCE_BRANCH } /docker-ce.repo 
 
					 
					 
					 
					        yum-config-manager -y --add-repo https:// ${ SOURCE } /linux/ ${ SOURCE_BRANCH } /docker-ce.repo 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        yum makecache 
 
					 
					 
					 
					         sed -i  " s| download.docker.com| ${ SOURCE } | g"   $Dir_YumRepos /docker-ce.repo 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        sed -i " s|download.docker.com| ${ SOURCE } |g "  $Dir_RedHatRepos /docker-ce.repo 
 
					 
					 
					 
					         ## 兼容处理版本号 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if [[  " ${ SYSTEM_JUDGMENT } " != " ${ SYSTEM_FEDORA } "  ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            case  ${ SYSTEM_VERSION_NUMBER : 0 : 1 }  in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            7 | 8 | 9) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                sed -i  " s| \$ releasever| ${ SYSTEM_VERSION_NUMBER : 0 : 1 } | g"   $Dir_YumRepos /docker-ce.repo 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                sed -i  " s| \$ releasever| 8| g"   $Dir_YumRepos /docker-ce.repo 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            yum makecache 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    [ [  " ${ SYSTEM_FACTIONS } "  = =  " ${ SYSTEM_OPENEULER } "  ] ]  &&  sed -i "s|\$releasever|9|g"  $Dir_RedHatRepos /docker-ce.repo
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 安装 Docker Engine 
 
					 
					 
					 
					## 安装 Docker Engine 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					function DockerEngine() { 
 
					 
					 
					 
					function DockerEngine() { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 导出可安装的版本列表 
 
					 
					 
					 
					    ## 导出可安装的版本列表 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    function Export_VersionList() { 
 
					 
					 
					 
					    function Export_VersionList() { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        case  " ${ SYSTEM_FACTIONS } " in 
 
					 
					 
					 
					        case  " ${ SYSTEM_FACTIONS } " in 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -272,7 +491,7 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            apt-cache madison docker-ce-cli | awk '{print  $3 }' | grep -Eo  " [ 0-9] [ 0-9] .[ 0-9] { 1,2} .[ 0-9] { 1,2} "  > $DockerCECLIVersionFile 
 
					 
					 
					 
					            apt-cache madison docker-ce-cli | awk '{print  $3 }' | grep -Eo  " [ 0-9] [ 0-9] .[ 0-9] { 1,2} .[ 0-9] { 1,2} "  > $DockerCECLIVersionFile 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            grep -wf  $DockerCEVersionFile   $DockerCECLIVersionFile  > $DockerVersionFile 
 
					 
					 
					 
					            grep -wf  $DockerCEVersionFile   $DockerCECLIVersionFile  > $DockerVersionFile 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ;; 
 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        " ${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					         " ${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } " ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            yum list docker-ce --showduplicates | sort -r | awk '{print  $2 }' | grep -Eo  " [ 0-9] [ 0-9] .[ 0-9] { 1,2} .[ 0-9] { 1,2} "  > $DockerCEVersionFile 
 
					 
					 
					 
					            yum list docker-ce --showduplicates | sort -r | awk '{print  $2 }' | grep -Eo  " [ 0-9] [ 0-9] .[ 0-9] { 1,2} .[ 0-9] { 1,2} "  > $DockerCEVersionFile 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            yum list docker-ce-cli --showduplicates | sort -r | awk '{print  $2 }' | grep -Eo  " [ 0-9] [ 0-9] .[ 0-9] { 1,2} .[ 0-9] { 1,2} "  > $DockerCECLIVersionFile 
 
					 
					 
					 
					            yum list docker-ce-cli --showduplicates | sort -r | awk '{print  $2 }' | grep -Eo  " [ 0-9] [ 0-9] .[ 0-9] { 1,2} .[ 0-9] { 1,2} "  > $DockerCECLIVersionFile 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            grep -wf  $DockerCEVersionFile   $DockerCECLIVersionFile  > $DockerVersionFile 
 
					 
					 
					 
					            grep -wf  $DockerCEVersionFile   $DockerCECLIVersionFile  > $DockerVersionFile 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -283,12 +502,12 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 安装 
 
					 
					 
					 
					    ## 安装 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    function Install() { 
 
					 
					 
					 
					    function Install() { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					         if  [ [  ${ DOCKER_VERSION_INSTALL_LATEST }  = =  "True"  ] ] ;   then
 
					 
					 
					 
					         if [[  " ${ INSTALL_LATESTED_DOCKER } " == " true" ]];  then
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            case " ${ SYSTEM_FACTIONS } " in 
 
					 
					 
					 
					            case " ${ SYSTEM_FACTIONS } " in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            " ${ SYSTEM_DEBIAN } ") 
 
					 
					 
					 
					            " ${ SYSTEM_DEBIAN } ") 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                apt-get install -y docker-ce docker-ce-cli containerd.io 
 
					 
					 
					 
					                apt-get install -y docker-ce docker-ce-cli containerd.io 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ;; 
 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					             "${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } ")  
 
					 
					 
					 
					             "${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } ")  
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                yum install -y docker-ce docker-ce-cli containerd.io 
 
					 
					 
					 
					                yum install -y docker-ce docker-ce-cli containerd.io 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ;; 
 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            esac 
 
					 
					 
					 
					            esac 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -301,9 +520,9 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 请根据上面的列表,选择并输入你想要安装的具体版本号: ${ PLAIN } \n " ) 
 
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 请根据上面的列表,选择并输入你想要安装的具体版本号: ${ PLAIN } \n " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                read -p  " ${ CHOICE } "  DOCKER_VERSION 
 
					 
					 
					 
					                read -p  " ${ CHOICE } "  DOCKER_VERSION 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                echo '' 
 
					 
					 
					 
					                echo '' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                cat $DockerVersionFile  |   grep -Ew " ${ DOCKER_VERSION } "  >/dev/null 2>& 1  
 
					 
					 
					 
					                 cat $DockerVersionFile  |  grep -Eq w " ${ DOCKER_VERSION } " 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                if [  $?  -eq 0 ]; then 
 
					 
					 
					 
					                if [  $?  -eq 0 ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                     echo  ${ DOCKER_VERSION }  |   grep -Ew  '[1,2][0-9].[0,1]{1,2}.[0-9]{1,2}'  >/dev/null 2>& 1 
 
					 
					 
					 
					                     echo  " ${ DOCKER_VERSION } "  |  grep -Eq w '[1,2][0-9].[0,1]{1,2}.[0-9]{1,2}'
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    if [  $?  -eq 0 ]; then 
 
					 
					 
					 
					                    if [  $?  -eq 0 ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        rm -rf  $DockerVersionFile 
 
					 
					 
					 
					                        rm -rf  $DockerVersionFile 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        break 
 
					 
					 
					 
					                        break 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -316,8 +535,8 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            done 
 
					 
					 
					 
					            done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            case " ${ SYSTEM_FACTIONS } " in 
 
					 
					 
					 
					            case " ${ SYSTEM_FACTIONS } " in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            " ${ SYSTEM_DEBIAN } ") 
 
					 
					 
					 
					            " ${ SYSTEM_DEBIAN } ") 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                 CheckVersion =$( echo  ${ DOCKER_VERSION }  |  cut -c1-2) 
 
					 
					 
					 
					                 CheckVersion=" $( echo  ${ DOCKER_VERSION }  |  cut -c1-2) " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                 CheckSubversion =$( echo  ${ DOCKER_VERSION }  |  cut -c4-5) 
 
					 
					 
					 
					                 CheckSubversion=" $( echo  ${ DOCKER_VERSION }  |  cut -c4-5) " 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                case  ${ CheckVersion }  in 
 
					 
					 
					 
					                case  ${ CheckVersion }  in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                18) 
 
					 
					 
					 
					                18) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    if [  ${ CheckSubversion }  ==  " 09" ]; then 
 
					 
					 
					 
					                    if [  ${ CheckSubversion }  ==  " 09" ]; then 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -332,7 +551,7 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                esac 
 
					 
					 
					 
					                esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                apt-get install -y docker-ce= ${ INSTALL_JUDGMENT } ${ DOCKER_VERSION } * docker-ce-cli=5: ${ DOCKER_VERSION } * containerd.io 
 
					 
					 
					 
					                apt-get install -y docker-ce= ${ INSTALL_JUDGMENT } ${ DOCKER_VERSION } * docker-ce-cli=5: ${ DOCKER_VERSION } * containerd.io 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ;; 
 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            " ${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					             " ${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } " ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                yum install -y docker-ce- ${ DOCKER_VERSION }  docker-ce-cli- ${ DOCKER_VERSION }  containerd.io 
 
					 
					 
					 
					                yum install -y docker-ce- ${ DOCKER_VERSION }  docker-ce-cli- ${ DOCKER_VERSION }  containerd.io 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ;; 
 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            esac 
 
					 
					 
					 
					            esac 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -340,13 +559,14 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					    } 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 修改 Docker Hub 源 
 
					 
					 
					 
					    ## 修改 Docker Hub 源 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					     function  ConfigureMirror( )  { 
 
					 
					 
					 
					     function RegistryMirror() { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					         if [ [   ${ REGISTRY_SOURCE_OFFICIAL }  = =  "False"  ] ] ;   then 
 
					 
					 
					 
					         if [[  " ${ REGISTRY_SOURCEL } " != " registry.hub.docker.com"  ]];  then 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            if [ -d  $DockerDir  ] && [ -e  $DockerConfig  ]; then 
 
					 
					 
					 
					            if [ -d  $DockerDir  ] && [ -e  $DockerConfig  ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                if [ -e  $DockerConfigBackup  ]; then 
 
					 
					 
					 
					                if [ -e  $DockerConfigBackup  ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    if [[  " ${ IGNORE_BACKUP_TIPS } " == " false"  ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        local CHOICE_BACKUP= $( echo  -e " \n ${ BOLD } └─ 检测到已备份的 Docker 配置文件,是否跳过覆盖备份? [Y/n]  ${ PLAIN } " ) 
 
					 
					 
					 
					                        local CHOICE_BACKUP= $( echo  -e " \n ${ BOLD } └─ 检测到已备份的 Docker 配置文件,是否跳过覆盖备份? [Y/n]  ${ PLAIN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        read -p  " ${ CHOICE_BACKUP } " INPUT 
 
					 
					 
					 
					                        read -p  " ${ CHOICE_BACKUP } " INPUT 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    [   -z ${ INPUT }  ]  &&   INPUT=  Y
 
					 
					 
					 
					                         [[  -z " ${ INPUT } "  ]] &&  INPUT= Y
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                        case  $INPUT  in 
 
					 
					 
					 
					                        case  $INPUT  in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        [Yy] | [Yy][Ee][Ss]) ;; 
 
					 
					 
					 
					                        [Yy] | [Yy][Ee][Ss]) ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        [Nn] | [Nn][Oo]) 
 
					 
					 
					 
					                        [Nn] | [Nn][Oo]) 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -357,6 +577,7 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                            echo -e  " \n $WARN  输入错误,默认不覆盖!" 
 
					 
					 
					 
					                            echo -e  " \n $WARN  输入错误,默认不覆盖!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                            ;; 
 
					 
					 
					 
					                            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                        esac 
 
					 
					 
					 
					                        esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                else 
 
					 
					 
					 
					                else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    cp -rvf  $DockerConfig   $DockerConfigBackup  2>&1 
 
					 
					 
					 
					                    cp -rvf  $DockerConfig   $DockerConfigBackup  2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    echo -e  " \n $COMPLETE  已备份原有 Docker 配置文件至 $DockerConfigBackup \n " 
 
					 
					 
					 
					                    echo -e  " \n $COMPLETE  已备份原有 Docker 配置文件至 $DockerConfigBackup \n " 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -367,7 +588,7 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                touch  $DockerConfig 
 
					 
					 
					 
					                touch  $DockerConfig 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            fi 
 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            echo -e '{\n   " registry-mirrors": [" https://SOURCE" ]\n}' > $DockerConfig 
 
					 
					 
					 
					            echo -e '{\n   " registry-mirrors": [" https://SOURCE" ]\n}' > $DockerConfig 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            sed -i "  s/SOURCE/$REGISTRY_SOURCE  /g "   $DockerConfig 
 
					 
					 
					 
					             sed -i " s/SOURCE/$SOURCE_ REGISTRY /g"   $DockerConfig 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            systemctl daemon-reload 
 
					 
					 
					 
					            systemctl daemon-reload 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        fi 
 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					    } 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -377,7 +598,7 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } ") 
 
					 
					 
					 
					    " ${ SYSTEM_DEBIAN } ") 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        dpkg -l | grep docker-ce-cli -q 
 
					 
					 
					 
					        dpkg -l | grep docker-ce-cli -q 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					     "${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } " ) 
 
					 
					 
					 
					     "${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } " ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        rpm -qa | grep docker-ce-cli -q 
 
					 
					 
					 
					        rpm -qa | grep docker-ce-cli -q 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ;; 
 
					 
					 
					 
					        ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					    esac 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -385,30 +606,30 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Export_VersionList 
 
					 
					 
					 
					        Export_VersionList 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        DOCKER_INSTALLED_VERSION= $( docker -v |  grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" ) 
 
					 
					 
					 
					        DOCKER_INSTALLED_VERSION= $( docker -v |  grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        DOCKER_VERSION_LATEST= $( cat $DockerVersionFile  |  head -n 1) 
 
					 
					 
					 
					        DOCKER_VERSION_LATEST= $( cat $DockerVersionFile  |  head -n 1) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					         if [ [   ${ DOCKER_INSTALLED_VERSION }  = =   ${ DOCKER_VERSION_LATEST }  ] ] ;   then 
 
					 
					 
					 
					         if [[  " ${ DOCKER_INSTALLED_VERSION } " == " ${ DOCKER_VERSION_LATEST } " ]];  then
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					             if  [ [  ${ DOCKER_VERSION_INSTALL_LATEST }  = =  "True"  ] ] ;   then
 
					 
					 
					 
					             if [[ " ${ INSTALL_LATESTED_DOCKER } " == " true" ]];  then
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                echo -e " \n $COMPLETE  检测到已安装最新版本的 Docker Engine,  跳过安装" 
 
					 
					 
					 
					                echo -e " \n $COMPLETE  检测到已安装最新版本的 Docker Engine,  跳过安装" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                Configure Mirror
 
					 
					 
					 
					                 Registry Mirror
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                if [[  $( systemctl is-active docker)  ==  " active"  ]]; then 
 
					 
					 
					 
					                if [[  $( systemctl is-active docker)  ==  " active"  ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                    systemctl restart docker 
 
					 
					 
					 
					                    systemctl restart docker 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                fi 
 
					 
					 
					 
					                fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                echo '' 
 
					 
					 
					 
					                echo '' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                systemctl enable --now docker >/dev/null 2>&1 
 
					 
					 
					 
					                systemctl enable --now docker >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                Show Version
 
					 
					 
					 
					                 Check Version
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					                AuthorSignature 
 
					 
					 
					 
					                 RunEnd 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                exit 
 
					 
					 
					 
					                exit 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            else 
 
					 
					 
					 
					            else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 检测到已安装最新版本的 Docker Engine,  是否继续安装其它版本? [Y/n]  ${ PLAIN } " ) 
 
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 检测到已安装最新版本的 Docker Engine,  是否继续安装其它版本? [Y/n]  ${ PLAIN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            fi 
 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        else 
 
					 
					 
					 
					        else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					             if  [ [  ${ DOCKER_VERSION_INSTALL_LATEST }  = =  "T rue" ] ] ;   then 
 
					 
					 
					 
					             if [[  " ${ INSTALL_LATESTED_DOCKER } " == " true " ]];  then
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 检测到已安装旧版本的 Docker Engine,  是否覆盖安装为最新版本? [Y/n]  ${ PLAIN } " ) 
 
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 检测到已安装旧版本的 Docker Engine,  是否覆盖安装为最新版本? [Y/n]  ${ PLAIN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            else 
 
					 
					 
					 
					            else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 检测到已安装旧版本的 Docker Engine,  是否继续安装其它版本? [Y/n]  ${ PLAIN } " ) 
 
					 
					 
					 
					                local CHOICE= $( echo  -e " \n ${ BOLD } └─ 检测到已安装旧版本的 Docker Engine,  是否继续安装其它版本? [Y/n]  ${ PLAIN } " ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            fi 
 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        fi 
 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        read -p  " ${ CHOICE } " INPUT 
 
					 
					 
					 
					        read -p  " ${ CHOICE } " INPUT 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        [   -z ${ INPUT }  ]  &&   INPUT=  Y
 
					 
					 
					 
					         [[  -z " ${ INPUT } "  ]] &&  INPUT= Y
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        case  $INPUT  in 
 
					 
					 
					 
					        case  $INPUT  in 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        [Yy] | [Yy][Ee][Ss]) 
 
					 
					 
					 
					        [Yy] | [Yy][Ee][Ss]) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            echo -en  " \n $WORKING  正在卸载之前的版本..." 
 
					 
					 
					 
					            echo -en  " \n $WORKING  正在卸载之前的版本..." 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -426,13 +647,14 @@ function DockerEngine() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        RemoveOldVersion 
 
					 
					 
					 
					        RemoveOldVersion 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        Install 
 
					 
					 
					 
					        Install 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    fi 
 
					 
					 
					 
					    fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    Configure Mirror
 
					 
					 
					 
					     Registry Mirror
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    systemctl stop docker >/dev/null 2>&1 
 
					 
					 
					 
					    systemctl stop docker >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    systemctl enable --now docker >/dev/null 2>&1 
 
					 
					 
					 
					    systemctl enable --now docker >/dev/null 2>&1 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 查看版本并验证安装结果 
 
					 
					 
					 
					## 查看版本并验证安装结果 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 function  Show Version( )  { 
 
					 
					 
					 
					 function Check Version() { 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    if [ -x /usr/bin/docker ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo -e  " \n $WORKING  验证安装版本...\n " 
 
					 
					 
					 
					        echo -e  " \n $WORKING  验证安装版本...\n " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        docker -v 
 
					 
					 
					 
					        docker -v 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        VERIFICATION_DOCKER= $? 
 
					 
					 
					 
					        VERIFICATION_DOCKER= $? 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -446,12 +668,12 @@ function ShowVersion() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                echo -e '请尝试手动执行安装命令: apt-get install -y docker-ce docker-ce-cli containerd.io\n' 
 
					 
					 
					 
					                echo -e '请尝试手动执行安装命令: apt-get install -y docker-ce docker-ce-cli containerd.io\n' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                echo '' 
 
					 
					 
					 
					                echo '' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ;; 
 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					         "${ SYSTEM_REDHAT } "  |   " ${ SYSTEM_OPENEULER } ")  
 
					 
					 
					 
					             "${ SYSTEM_REDHAT } " | " ${ SYSTEM_OPENCLOUDOS } " |  " ${ SYSTEM_OPENEULER } ")  
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					             echo  -e  " \n检查源文件:  cat $Dir_RedHat Repos  /docker.repo" 
 
					 
					 
					 
					                 echo -e " \n 检查源文件:  cat $Dir_Yum Repos /docker.repo" 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                echo -e '请尝试手动执行安装命令: yum install -y docker-ce docker-ce-cli containerd.io\n' 
 
					 
					 
					 
					                echo -e '请尝试手动执行安装命令: yum install -y docker-ce docker-ce-cli containerd.io\n' 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                ;; 
 
					 
					 
					 
					                ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            esac 
 
					 
					 
					 
					            esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					         exit
 
					 
					 
					 
					              exit 1 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        fi 
 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if [[  $( systemctl is-active docker)  !=  " active"  ]]; then 
 
					 
					 
					 
					        if [[  $( systemctl is-active docker)  !=  " active"  ]]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            sleep 2 
 
					 
					 
					 
					            sleep 2 
 
				
			 
			
		
	
	
		
		
			
				
					
					
						
					 
					 
					@@ -465,179 +687,118 @@ function ShowVersion() {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                echo -e " \n 官方安装文档:  https://docs.docker.com/engine/install" 
 
					 
					 
					 
					                echo -e " \n 官方安装文档:  https://docs.docker.com/engine/install" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            fi 
 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        fi 
 
					 
					 
					 
					        fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					    else 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					        echo -e " \n $ERROR  安装失败\n " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					function  ChooseMirrors( )  { 
 
					 
					 
					 
					    fi 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					} 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    function  WelcomeTitle( )  {  
 
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        local  system_name = " ${ SYSTEM_PRETTY_NAME :- " ${ SYSTEM_NAME }   ${ SYSTEM_VERSION_NUMBER } " } "  
 
					 
					 
					 
					## 运行结束 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        local  arch = " ${ SYSTEM_ARCH } "  
 
					 
					 
					 
					function RunEnd() { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        local  date = " $( date "+%Y-%m-%d %H:%M:%S" )  " 
 
					 
					 
					 
					    echo -e " \n $COMPLETE  脚本执行结束\n " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        local  timezone = " $( timedatectl status 2>/dev/null |  grep "Time zone"  |  awk -F ':'  '{print$2}'  |  awk -F ' '  '{print$1}' ) "  
 
					 
					 
					 
					    echo -e ' \033[0;1;35;95m┌─\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m┐\033[0m' 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					    echo -e ' \033[0;1;31;91m│▞\033[0;1;33;93m▀▖\033[0m            \033[0;1;32;92m▙▗\033[0;1;36;96m▌\033[0m      \033[0;1;31;91m▗\033[0;1;33;93m▐\033[0m     \033[0;1;34;94m│\033[0m' 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					          echo  -e '+------------------------------------+' 
 
					 
					 
					 
					     echo -e ' \033[0;1;33;93m│▚\033[0;1;32;92m▄\033[0m \033[0;1;36;96m▌\033[0m \033[0;1;34;94m▌▛\033[0;1;35;95m▀▖\033[0;1;31;91m▞▀\033[0;1;33;93m▖▙\033[0;1;32;92m▀▖\033[0;1;36;96m▌▘\033[0;1;34;94m▌▝\033[0;1;35;95m▀▖\033[0;1;31;91m▛▀\033[0;1;33;93m▖▄\033[0;1;32;92m▜▀\033[0m \033[0;1;36;96m▞\033[0;1;34;94m▀▖\033[0;1;35;95m│\033[0m' 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					          echo  -e '|                                    |' 
 
					 
					 
					 
					     echo -e ' \033[0;1;32;92m│▖\033[0m \033[0;1;36;96m▌\033[0;1;34;94m▌\033[0m \033[0;1;35;95m▌▙\033[0;1;31;91m▄▘\033[0;1;33;93m▛▀\033[0m \033[0;1;32;92m▌\033[0m  \033[0;1;34;94m▌\033[0m \033[0;1;35;95m▌▞\033[0;1;31;91m▀▌\033[0;1;33;93m▌\033[0m \033[0;1;32;92m▌▐\033[0;1;36;96m▐\033[0m \033[0;1;34;94m▖▌\033[0m \033[0;1;35;95m▌\033[0;1;31;91m│\033[0m' 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					          echo  -e '|    欢迎使用 Docker 一键安装脚本    |' 
 
					 
					 
					 
					     echo -e ' \033[0;1;36;96m│▝\033[0;1;34;94m▀\033[0m \033[0;1;35;95m▝▀\033[0;1;31;91m▘▌\033[0m  \033[0;1;32;92m▝▀\033[0;1;36;96m▘▘\033[0m  \033[0;1;35;95m▘\033[0m \033[0;1;31;91m▘▝\033[0;1;33;93m▀▘\033[0;1;32;92m▘\033[0m \033[0;1;36;96m▘▀\033[0;1;34;94m▘▀\033[0m \033[0;1;35;95m▝\033[0;1;31;91m▀\033[0m \033[0;1;33;93m│\033[0m' 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					          echo  -e '|                                    |' 
 
					 
					 
					 
					     echo -e ' \033[0;1;34;94m└─\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m──\033[0;1;36;96m──\033[0;1;34;94m──\033[0;1;35;95m──\033[0;1;31;91m──\033[0;1;33;93m──\033[0;1;32;92m┘\033[0m' 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					          echo  -e '+------------------------------------+' 
 
					 
					 
					 
					     echo -e "     \0 33[ 1; 34mPowered by linuxmirrors.cn\0 33[ 0m\n " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ''  
 
					 
					 
					 
					} 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e "  运行环境   ${ BLUE } ${ system_name }   ${ arch } ${ PLAIN } "  
 
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e "  系统时间   ${ BLUE } ${ date }   ${ timezone } ${ PLAIN } "  
 
					 
					 
					 
					## 处理命令选项 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ''  
 
					 
					 
					 
					function CommandOptions() { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    } 
 
					 
					 
					 
					     ## 命令帮助 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    clear 
 
					 
					 
					 
					     function Output_Help_Info() { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    WelcomeTitle 
 
					 
					 
					 
					        echo -e " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					选项命令( 参数名/含义/参数值) : 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    ## 是否手动选择安装版本  
 
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    local  CHOICE_A = $( echo  -e " ${ BOLD } └─ 是否安装最新版本的 Docker Engine? [Y/n]  ${ PLAIN } " )  
 
					 
					 
					 
					  --source                 指定 Docker CE 源地址                     地址 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    read  -p " ${ CHOICE_A } "  INPUT 
 
					 
					 
					 
					  --source-registry        指定 Docker Hub 源地址                    地址 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    [  -z ${ INPUT }  ]  &&  INPUT = Y 
 
					 
					 
					 
					  --install-latested       控制是否安装最新版本的 Docker Engine      true 或 false 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    case  $INPUT  in 
 
					 
					 
					 
					  --ignore-backup-tips     忽略覆盖备份提示                          无 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    [ Yy]  |  [ Yy] [ Ee] [ Ss] )  
 
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        DOCKER_VERSION_INSTALL_LATEST = "True"  
 
					 
					 
					 
					问题报告 https://github.com/SuperManito/LinuxMirrors/issues 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ;  
 
					 
					 
					 
					   " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    [ Nn]  |  [ Nn] [ Oo] ) 
 
					 
					 
					 
					    } 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        DOCKER_VERSION_INSTALL_LATEST = "False" 
 
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        SOURCE = "download.docker.com"  
 
					 
					 
					 
					    ## 判断参数 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ;  
 
					 
					 
					 
					    while  [  $#  -gt 0  ] ;  do 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    *)  
 
					 
					 
					 
					        case  $1  in 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        DOCKER_VERSION_INSTALL_LATEST = "True" 
 
					 
					 
					 
					        ## 指定 Docker CE 软件源地址 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e " \n $WARN  输入错误,默认安装最新版本! " 
 
					 
					 
					 
					        --source)  
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					             if [  $2  ]; then 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    esac 
 
					 
					 
					 
					                 echo  " $2 " | grep -Eq " \- | \( | \) | \[ | \] | \{ | \} " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  [  -z $SOURCE  ] ;   then 
 
					 
					 
					 
					                if [  $?  -eq 0 ];  then
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e '' 
 
					 
					 
					 
					                     Output_Error  " 检测到无效参数值 ${ BLUE } $2 ${ PLAIN }  ,请输入有效的地址!" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   阿里云            1)'  
 
					 
					 
					 
					                 else 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   腾讯云           2)' 
 
					 
					 
					 
					                     SOURCE=" $2 " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   华为云           3)' 
 
					 
					 
					 
					                     shift 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   Azure             4)'  
 
					 
					 
					 
					                 fi 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   网易              5)'  
 
					 
					 
					 
					             else 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   清华大学         6)' 
 
					 
					 
					 
					                 Output_Error " 检测到 ${ BLUE } $1 ${ PLAIN }  为无效参数,请在该参数后指定软件源地址!" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   南京大学         7)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   中科大           8)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   中科院           9)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e ' ❖   官方            10)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        local  CHOICE_B = $( echo  -e " \n ${ BOLD } └─ 请选择并输入你想使用的 Docker CE 源 [ 1~10 ]:  ${ PLAIN } " ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        read  -p " ${ CHOICE_B } "  INPUT
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        case  $INPUT  in
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        1) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirrors.aliyun.com/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        2) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirrors.tencent.com/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        3) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "repo.huaweicloud.com/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        4) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirror.azure.cn/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        5) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirrors.163.com/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        6) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirrors.tuna.tsinghua.edu.cn/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        6) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirrors.nju.edu.cn/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        8) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirrors.ustc.edu.cn/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        9) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirror.iscas.ac.cn/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        10) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "download.docker.com" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        *) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SOURCE = "mirrors.aliyun.com/docker-ce" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            echo  -e " \n $WARN  输入错误,默认使用阿里云! " 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            sleep 1s
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        esac 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            fi 
 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   阿里云(北京)   1)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   阿里云(杭州)   2)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   阿里云(成都)   3)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   阿里云(广州)   4)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   阿里云(香港)   5)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   腾讯云           6)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   Azure            7)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   DaoCloud         8)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   中科大           9)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   谷歌云          10)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e ' ❖   官方            11)' 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    local  CHOICE_C = $( echo  -e " \n ${ BOLD } └─ 请选择并输入你想使用的 Docker Hub 源 [ 1~11 ]:  ${ PLAIN } " ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    read  -p " ${ CHOICE_C } "  INPUT
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    case  $INPUT  in
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    1) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "registry.cn-beijing.aliyuncs.com" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ;; 
 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    2)  
 
					 
					 
					 
					         ## 指定 Docker Hub 仓库地址 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "registry.cn-hangzhou.aliyuncs.com" 
 
					 
					 
					 
					         --source-registry) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					             if [  $2  ]; then 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                echo  " $2 " | grep -Eq " \- | \( | \) | \[ | \] | \{ | \} " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                if [  $?  -eq 0 ]; then 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    Output_Error  " 检测到无效参数值 ${ BLUE } $2 ${ PLAIN }  ,请输入有效的地址!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    SOURCE_REGISTRY=" $2 " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                    shift 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            else 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                Output_Error " 检测到 ${ BLUE } $1 ${ PLAIN }  为无效参数,请在该参数后指定软件源地址!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            fi 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            ;; 
 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    3)  
 
					 
					 
					 
					         ## 安装最新版本 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "registry.cn-chengdu.aliyuncs.com" 
 
					 
					 
					 
					         --install-latested) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					             if [  $2  ]; then 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					                 case  $2  in 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    4)  
 
					 
					 
					 
					                 [Tt]rue | [Ff]alse) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "registry.cn-guangzhou.aliyuncs.com"  
 
					 
					 
					 
					                    INSTALL_LATESTED_DOCKER= " ${ 2 ,, } " 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					                     shift 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    5) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "registry.cn-hongkong.aliyuncs.com" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    6) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "mirror.ccs.tencentyun.com" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    7) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "dockerhub.azk8s.com" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    8) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "f1361db2.m.daocloud.io" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    9) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "docker.mirrors.ustc.edu.cn" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    10) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "gcr.io" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        ; ; 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    11) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "registry.docker-cn.com" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "True" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    ;; 
 
					 
					 
					 
					                    ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                *) 
 
					 
					 
					 
					                *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE = "registry.cn-hangzhou.aliyuncs.com" 
 
					 
					 
					 
					                     Output_Error " 检测到 ${ BLUE } $2 ${ PLAIN }  为无效参数值,请在该参数后指定 true  或 false  作为参数值!" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        REGISTRY_SOURCE_OFFICIAL = "False" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        echo  -e " \n $WARN  输入错误,默认使用  ${ BLUE } 阿里云(杭州) ${ PLAIN } ! " 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        sleep 1s
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					                    ;; 
 
					 
					 
					 
					                    ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                esac 
 
					 
					 
					 
					                esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    echo  -e '' 
 
					 
					 
					 
					             else 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					                Output_Error " 检测到 ${ BLUE } $1 ${ PLAIN }  为无效参数,请在该参数后指定 true  或 false  作为参数值!" 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    CloseFirewall 
 
					 
					 
					 
					             fi 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ## 忽略覆盖备份提示 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        --ignore-backup-tips) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            IGNORE_BACKUP_TIPS=" true" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        ## 命令帮助 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        --help) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            Output_Help_Info 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            exit 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        *) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            Output_Error " 检测到 ${ BLUE } $1 ${ PLAIN }  为无效参数,请确认后重新输入!" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            ;; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        esac 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        shift 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    done 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    ## 给部分命令选项赋予默认值 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    IGNORE_BACKUP_TIPS=" ${ IGNORE_BACKUP_TIPS :- "false" } " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					## 组合函数 
 
					 
					 
					 
					## 组合函数 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					function Combin_Function() { 
 
					 
					 
					 
					function Combin_Function() { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    PermissionJudgment 
 
					 
					 
					 
					    PermissionJudgment 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    EnvJudgment 
 
					 
					 
					 
					    EnvJudgment 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    StartTitle 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ChooseMirrors 
 
					 
					 
					 
					    ChooseMirrors 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    InstallationEnvironment 
 
					 
					 
					 
					     CloseFirewall 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    EnvironmentInstall 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ConfigureDockerCEMirror 
 
					 
					 
					 
					    ConfigureDockerCEMirror 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    DockerEngine 
 
					 
					 
					 
					    DockerEngine 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    Show Version
 
					 
					 
					 
					     Check Version
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    AuthorSignature 
 
					 
					 
					 
					     RunEnd 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					} 
 
					 
					 
					 
					} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					CommandOptions " $@ " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					Combin_Function 
 
					 
					 
					 
					Combin_Function