mirror of
				https://gitee.com/SuperManito/LinuxMirrors
				synced 2025-11-04 00:10:27 +08:00 
			
		
		
		
	更新路径
This commit is contained in:
		
							
								
								
									
										644
									
								
								docs/docker.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										644
									
								
								docs/docker.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,644 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					## Author: SuperManito
 | 
				
			||||||
 | 
					## Modified: 2023-05-02
 | 
				
			||||||
 | 
					## License: MIT
 | 
				
			||||||
 | 
					## Github: https://github.com/SuperManito/LinuxMirrors
 | 
				
			||||||
 | 
					 [0;1;35;95m⡇[0m  [0;1;33;93m⠄[0m [0;1;32;92m⣀⡀[0m [0;1;36;96m⡀[0;1;34;94m⢀[0m [0;1;35;95m⡀⢀[0m [0;1;31;91m⡷[0;1;33;93m⢾[0m [0;1;32;92m⠄[0m [0;1;36;96m⡀⣀[0m [0;1;34;94m⡀[0;1;35;95m⣀[0m [0;1;31;91m⢀⡀[0m [0;1;33;93m⡀[0;1;32;92m⣀[0m [0;1;36;96m⢀⣀[0m
 | 
				
			||||||
 | 
					 [0;1;31;91m⠧[0;1;33;93m⠤[0m [0;1;32;92m⠇[0m [0;1;36;96m⠇⠸[0m [0;1;34;94m⠣[0;1;35;95m⠼[0m [0;1;31;91m⠜⠣[0m [0;1;33;93m⠇[0;1;32;92m⠸[0m [0;1;36;96m⠇[0m [0;1;34;94m⠏[0m  [0;1;35;95m⠏[0m  [0;1;33;93m⠣⠜[0m [0;1;32;92m⠏[0m  [0;1;34;94m⠭⠕[0m
 | 
				
			||||||
 | 
					function AuthorSignature() {
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					    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'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo -e " \033[1;34m官方网站\033[0m https://linuxmirrors.cn\n"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 定义系统判定变量
 | 
				
			||||||
 | 
					SYSTEM_DEBIAN="Debian"
 | 
				
			||||||
 | 
					SYSTEM_UBUNTU="Ubuntu"
 | 
				
			||||||
 | 
					SYSTEM_KALI="Kali"
 | 
				
			||||||
 | 
					SYSTEM_REDHAT="RedHat"
 | 
				
			||||||
 | 
					SYSTEM_RHEL="RedHat"
 | 
				
			||||||
 | 
					SYSTEM_CENTOS="CentOS"
 | 
				
			||||||
 | 
					SYSTEM_CENTOS_STREAM="CentOS Stream"
 | 
				
			||||||
 | 
					SYSTEM_ROCKY="Rocky"
 | 
				
			||||||
 | 
					SYSTEM_FEDORA="Fedora"
 | 
				
			||||||
 | 
					SYSTEM_OPENEULER="openEuler"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 定义目录和文件
 | 
				
			||||||
 | 
					File_LinuxRelease=/etc/os-release
 | 
				
			||||||
 | 
					File_RedHatRelease=/etc/redhat-release
 | 
				
			||||||
 | 
					File_openEulerRelease=/etc/openEuler-release
 | 
				
			||||||
 | 
					File_DebianVersion=/etc/debian_version
 | 
				
			||||||
 | 
					File_DebianSourceList=/etc/apt/sources.list
 | 
				
			||||||
 | 
					Dir_DebianExtendSource=/etc/apt/sources.list.d
 | 
				
			||||||
 | 
					Dir_RedHatRepos=/etc/yum.repos.d
 | 
				
			||||||
 | 
					Dir_openEulerRepos=/etc/yum.repos.d
 | 
				
			||||||
 | 
					Dir_openSUSERepos=/etc/zypp/repos.d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 定义 Docker 相关变量
 | 
				
			||||||
 | 
					DockerDir=/etc/docker
 | 
				
			||||||
 | 
					DockerConfig=$DockerDir/daemon.json
 | 
				
			||||||
 | 
					DockerConfigBackup=$DockerDir/daemon.json.bak
 | 
				
			||||||
 | 
					DockerVersionFile=docker-version.txt
 | 
				
			||||||
 | 
					DockerCEVersionFile=docker-ce-version.txt
 | 
				
			||||||
 | 
					DockerCECLIVersionFile=docker-ce-cli-version.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 定义颜色变量
 | 
				
			||||||
 | 
					RED='\033[31m'
 | 
				
			||||||
 | 
					GREEN='\033[32m'
 | 
				
			||||||
 | 
					YELLOW='\033[33m'
 | 
				
			||||||
 | 
					BLUE='\033[34m'
 | 
				
			||||||
 | 
					PLAIN='\033[0m'
 | 
				
			||||||
 | 
					BOLD='\033[1m'
 | 
				
			||||||
 | 
					SUCCESS='[\033[32mOK\033[0m]'
 | 
				
			||||||
 | 
					COMPLETE='[\033[32mDONE\033[0m]'
 | 
				
			||||||
 | 
					WARN='[\033[33mWARN\033[0m]'
 | 
				
			||||||
 | 
					ERROR='[\033[31mERROR\033[0m]'
 | 
				
			||||||
 | 
					WORKING='[\033[34m*\033[0m]'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 系统判定变量
 | 
				
			||||||
 | 
					function EnvJudgment() {
 | 
				
			||||||
 | 
					    ## 定义系统名称
 | 
				
			||||||
 | 
					    SYSTEM_NAME="$(cat $File_LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")"
 | 
				
			||||||
 | 
					    cat $File_LinuxRelease | grep "PRETTY_NAME=" -q
 | 
				
			||||||
 | 
					    [ $? -eq 0 ] && SYSTEM_PRETTY_NAME="$(cat $File_LinuxRelease | grep -E "^PRETTY_NAME=" | 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
 | 
				
			||||||
 | 
					    SYSTEM_ID="$(cat $File_LinuxRelease | grep -E "^ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")"
 | 
				
			||||||
 | 
					    ## 判定当前系统派系(Debian/RedHat/openEuler)
 | 
				
			||||||
 | 
					    if [ -s $File_RedHatRelease ]; then
 | 
				
			||||||
 | 
					        SYSTEM_FACTIONS="${SYSTEM_REDHAT}"
 | 
				
			||||||
 | 
					    elif [ -s $File_DebianVersion ]; then
 | 
				
			||||||
 | 
					        SYSTEM_FACTIONS="${SYSTEM_DEBIAN}"
 | 
				
			||||||
 | 
					    elif [ -s $File_openEulerRelease ]; then
 | 
				
			||||||
 | 
					        SYSTEM_FACTIONS="${SYSTEM_OPENEULER}"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        echo -e "\n$ERROR 无法判断当前运行环境,请先确认本脚本针对当前操作系统是否适配!\n"
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    ## 判定系统名称、版本、版本号
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					        SYSTEM_JUDGMENT=$(lsb_release -is)
 | 
				
			||||||
 | 
					        SYSTEM_VERSION=$(lsb_release -cs)
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}")
 | 
				
			||||||
 | 
					        SYSTEM_JUDGMENT="$(cat $File_RedHatRelease | awk -F ' ' '{printf$1}')"
 | 
				
			||||||
 | 
					        cat $File_RedHatRelease | grep -q "${SYSTEM_CENTOS_STREAM}"
 | 
				
			||||||
 | 
					        [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_CENTOS_STREAM}"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        SYSTEM_JUDGMENT="${SYSTEM_OPENEULER}"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    ## 判定系统处理器架构
 | 
				
			||||||
 | 
					    case $(uname -m) in
 | 
				
			||||||
 | 
					    x86_64)
 | 
				
			||||||
 | 
					        SYSTEM_ARCH="x86_64"
 | 
				
			||||||
 | 
					        SOURCE_ARCH="amd64"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    aarch64)
 | 
				
			||||||
 | 
					        SYSTEM_ARCH="ARM64"
 | 
				
			||||||
 | 
					        SOURCE_ARCH="arm64"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    armv7l)
 | 
				
			||||||
 | 
					        SYSTEM_ARCH="ARMv7"
 | 
				
			||||||
 | 
					        SOURCE_ARCH="armhf"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    armv6l)
 | 
				
			||||||
 | 
					        SYSTEM_ARCH="ARMv6"
 | 
				
			||||||
 | 
					        SOURCE_ARCH="armhf"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    i386 | i686)
 | 
				
			||||||
 | 
					        SYSTEM_ARCH="x86_32"
 | 
				
			||||||
 | 
					        echo -e "\n${RED}---------- Docker Engine 不支持安装在 x86_32 架构的环境上! ----------${PLAIN}\n"
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        SYSTEM_ARCH=$(uname -m)
 | 
				
			||||||
 | 
					        SOURCE_ARCH=armhf
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    ## 定义软件源分支名称
 | 
				
			||||||
 | 
					    case "${SYSTEM_JUDGMENT}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_RHEL}" | "${SYSTEM_CENTOS_STREAM}" | "${SYSTEM_ROCKY}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        SOURCE_BRANCH="centos"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        SOURCE_BRANCH="$(echo "${SYSTEM_JUDGMENT,,}" | sed "s/ /-/g")"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    ## 定义软件源同步/更新文字
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					        SYNC_TXT="更新"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        SYNC_TXT="同步"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 基础环境判断
 | 
				
			||||||
 | 
					function PermissionJudgment() {
 | 
				
			||||||
 | 
					    if [ $UID -ne 0 ]; then
 | 
				
			||||||
 | 
					        echo -e "\n$ERROR 权限不足,请使用 Root 用户运行本脚本\n"
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 关闭防火墙和SELinux
 | 
				
			||||||
 | 
					function CloseFirewall() {
 | 
				
			||||||
 | 
					    local SelinuxConf=/etc/selinux/config
 | 
				
			||||||
 | 
					    if [ -x /usr/bin/systemctl ]; then
 | 
				
			||||||
 | 
					        if [[ $(systemctl is-active firewalld) == "active" ]]; then
 | 
				
			||||||
 | 
					            local CHOICE=$(echo -e "\n${BOLD}└─ 是否关闭防火墙和 SELinux ? [Y/n] ${PLAIN}")
 | 
				
			||||||
 | 
					            read -p "${CHOICE}" INPUT
 | 
				
			||||||
 | 
					            [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
 | 
					            case $INPUT in
 | 
				
			||||||
 | 
					            [Yy] | [Yy][Ee][Ss])
 | 
				
			||||||
 | 
					                systemctl disable --now firewalld >/dev/null 2>&1
 | 
				
			||||||
 | 
					                [ -s $SelinuxConf ] && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" $SelinuxConfig && setenforce 0 >/dev/null 2>&1
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
 | 
					            *)
 | 
				
			||||||
 | 
					                echo -e "\n$WARN 输入错误,默认不关闭!"
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            esac
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 安装环境包
 | 
				
			||||||
 | 
					function InstallationEnvironment() {
 | 
				
			||||||
 | 
					    ## 删除原有源
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					        sed -i '/docker-ce/d' $File_DebianSourceList
 | 
				
			||||||
 | 
					        rm -rf $Dir_DebianExtendSource/docker.list
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}")
 | 
				
			||||||
 | 
					        rm -rf $Dir_RedHatRepos/*docker*.repo
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        rm -rf $Dir_openEulerRepos/*docker*.repo
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    echo -e "$WORKING 开始${SYNC_TXT}软件源...\n"
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					        apt-get update
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        yum makecache
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    VERIFICATION_SOURCESYNC=$?
 | 
				
			||||||
 | 
					    if [ ${VERIFICATION_SOURCESYNC} -ne 0 ]; then
 | 
				
			||||||
 | 
					        echo -e "\n$ERROR 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用!\n"
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo -e "\n$COMPLETE 软件源${SYNC_TXT}结束\n"
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					        apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}")
 | 
				
			||||||
 | 
					        yum install -y yum-utils device-mapper-persistent-data lvm2
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        dnf install -y dnf-utils device-mapper-persistent-data lvm2
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 卸载旧版本的 Docker Engine
 | 
				
			||||||
 | 
					function RemoveOldVersion() {
 | 
				
			||||||
 | 
					    systemctl disable --now docker >/dev/null 2>&1
 | 
				
			||||||
 | 
					    sleep 2s
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					        apt-get remove -y docker-ce docker-ce-cli containerd.io runc >/dev/null 2>&1
 | 
				
			||||||
 | 
					        apt-get autoremove -y >/dev/null 2>&1
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        yum remove -y docker-ce docker-ce-cli containerd.io podman* runc >/dev/null 2>&1
 | 
				
			||||||
 | 
					        yum autoremove -y >/dev/null 2>&1
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 配置 Docker CE 源
 | 
				
			||||||
 | 
					function ConfigureDockerCEMirror() {
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${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
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        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
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        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_RedHatRepos/docker-ce.repo
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    [[ "${SYSTEM_FACTIONS}" == "${SYSTEM_OPENEULER}" ]] && sed -i "s|\$releasever|9|g" $Dir_RedHatRepos/docker-ce.repo
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 安装 Docker Engine
 | 
				
			||||||
 | 
					function DockerEngine() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## 导出可安装的版本列表
 | 
				
			||||||
 | 
					    function Export_VersionList() {
 | 
				
			||||||
 | 
					        case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					        "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					            apt-cache madison docker-ce | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$DockerCEVersionFile
 | 
				
			||||||
 | 
					            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
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        "${SYSTEM_REDHAT}" | "${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-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
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					        rm -rf $DockerCEVersionFile $DockerCECLIVersionFile
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## 安装
 | 
				
			||||||
 | 
					    function Install() {
 | 
				
			||||||
 | 
					        if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
				
			||||||
 | 
					            case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					            "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					                apt-get install -y docker-ce docker-ce-cli containerd.io
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					                yum install -y docker-ce docker-ce-cli containerd.io
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            esac
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            Export_VersionList
 | 
				
			||||||
 | 
					            echo -e "\n${GREEN} --------- 请选择你要安装的版本,如:19.03.15 ---------- ${PLAIN}\n"
 | 
				
			||||||
 | 
					            cat $DockerVersionFile
 | 
				
			||||||
 | 
					            echo -e '\n注:以上可供选择的安装版本由官方源提供,若系统过新可能无法安装较旧的版本'
 | 
				
			||||||
 | 
					            while true; do
 | 
				
			||||||
 | 
					                local CHOICE=$(echo -e "\n${BOLD}└─ 请根据上面的列表,选择并输入你想要安装的具体版本号:${PLAIN}\n")
 | 
				
			||||||
 | 
					                read -p "${CHOICE}" DOCKER_VERSION
 | 
				
			||||||
 | 
					                echo ''
 | 
				
			||||||
 | 
					                cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1
 | 
				
			||||||
 | 
					                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
 | 
				
			||||||
 | 
					                    if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
					                        rm -rf $DockerVersionFile
 | 
				
			||||||
 | 
					                        break
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                        echo -e "$ERROR 请输入正确的版本号!"
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    echo -e "$ERROR 输入错误请重新输入!"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					            done
 | 
				
			||||||
 | 
					            case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					            "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					                CheckVersion=$(echo ${DOCKER_VERSION} | cut -c1-2)
 | 
				
			||||||
 | 
					                CheckSubversion=$(echo ${DOCKER_VERSION} | cut -c4-5)
 | 
				
			||||||
 | 
					                case ${CheckVersion} in
 | 
				
			||||||
 | 
					                18)
 | 
				
			||||||
 | 
					                    if [ ${CheckSubversion} == "09" ]; then
 | 
				
			||||||
 | 
					                        INSTALL_JUDGMENT="5:"
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                        INSTALL_JUDGMENT=""
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                *)
 | 
				
			||||||
 | 
					                    INSTALL_JUDGMENT="5:"
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                esac
 | 
				
			||||||
 | 
					                apt-get install -y docker-ce=${INSTALL_JUDGMENT}${DOCKER_VERSION}* docker-ce-cli=5:${DOCKER_VERSION}* containerd.io
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					                yum install -y docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            esac
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## 修改 Docker Hub 源
 | 
				
			||||||
 | 
					    function ConfigureMirror() {
 | 
				
			||||||
 | 
					        if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then
 | 
				
			||||||
 | 
					            if [ -d $DockerDir ] && [ -e $DockerConfig ]; then
 | 
				
			||||||
 | 
					                if [ -e $DockerConfigBackup ]; then
 | 
				
			||||||
 | 
					                    local CHOICE_BACKUP=$(echo -e "\n${BOLD}└─ 检测到已备份的 Docker 配置文件,是否跳过覆盖备份? [Y/n] ${PLAIN}")
 | 
				
			||||||
 | 
					                    read -p "${CHOICE_BACKUP}" INPUT
 | 
				
			||||||
 | 
					                    [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
 | 
					                    case $INPUT in
 | 
				
			||||||
 | 
					                    [Yy] | [Yy][Ee][Ss]) ;;
 | 
				
			||||||
 | 
					                    [Nn] | [Nn][Oo])
 | 
				
			||||||
 | 
					                        echo ''
 | 
				
			||||||
 | 
					                        cp -rvf $DockerConfig $DockerConfigBackup 2>&1
 | 
				
			||||||
 | 
					                        ;;
 | 
				
			||||||
 | 
					                    *)
 | 
				
			||||||
 | 
					                        echo -e "\n$WARN 输入错误,默认不覆盖!"
 | 
				
			||||||
 | 
					                        ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    cp -rvf $DockerConfig $DockerConfigBackup 2>&1
 | 
				
			||||||
 | 
					                    echo -e "\n$COMPLETE 已备份原有 Docker 配置文件至 $DockerConfigBackup\n"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                sleep 2s
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                mkdir -p $DockerDir >/dev/null 2>&1
 | 
				
			||||||
 | 
					                touch $DockerConfig
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            echo -e '{\n  "registry-mirrors": ["https://SOURCE"]\n}' >$DockerConfig
 | 
				
			||||||
 | 
					            sed -i "s/SOURCE/$REGISTRY_SOURCE/g" $DockerConfig
 | 
				
			||||||
 | 
					            systemctl daemon-reload
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## 判定是否已安装
 | 
				
			||||||
 | 
					    case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					    "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					        dpkg -l | grep docker-ce-cli -q
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					        rpm -qa | grep docker-ce-cli -q
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
					        Export_VersionList
 | 
				
			||||||
 | 
					        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)
 | 
				
			||||||
 | 
					        if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then
 | 
				
			||||||
 | 
					            if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
				
			||||||
 | 
					                echo -e "\n$COMPLETE 检测到已安装最新版本的 Docker Engine,跳过安装"
 | 
				
			||||||
 | 
					                ConfigureMirror
 | 
				
			||||||
 | 
					                if [[ $(systemctl is-active docker) == "active" ]]; then
 | 
				
			||||||
 | 
					                    systemctl restart docker
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					                echo ''
 | 
				
			||||||
 | 
					                systemctl enable --now docker >/dev/null 2>&1
 | 
				
			||||||
 | 
					                ShowVersion
 | 
				
			||||||
 | 
					                AuthorSignature
 | 
				
			||||||
 | 
					                exit
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
				
			||||||
 | 
					                local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本? [Y/n] ${PLAIN}")
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        read -p "${CHOICE}" INPUT
 | 
				
			||||||
 | 
					        [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
 | 
					        case $INPUT in
 | 
				
			||||||
 | 
					        [Yy] | [Yy][Ee][Ss])
 | 
				
			||||||
 | 
					            echo -en "\n$WORKING 正在卸载之前的版本..."
 | 
				
			||||||
 | 
					            RemoveOldVersion
 | 
				
			||||||
 | 
					            echo -e "\n\n$COMPLETE 卸载完毕\n"
 | 
				
			||||||
 | 
					            Install
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
 | 
					        *)
 | 
				
			||||||
 | 
					            echo -e "\n$WARN 输入错误,默认不覆盖安装!\n"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					        rm -rf $DockerVersionFile
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        RemoveOldVersion
 | 
				
			||||||
 | 
					        Install
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    ConfigureMirror
 | 
				
			||||||
 | 
					    systemctl stop docker >/dev/null 2>&1
 | 
				
			||||||
 | 
					    systemctl enable --now docker >/dev/null 2>&1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 查看版本并验证安装结果
 | 
				
			||||||
 | 
					function ShowVersion() {
 | 
				
			||||||
 | 
					    echo -e "\n$WORKING 验证安装版本...\n"
 | 
				
			||||||
 | 
					    docker -v
 | 
				
			||||||
 | 
					    VERIFICATION_DOCKER=$?
 | 
				
			||||||
 | 
					    if [ ${VERIFICATION_DOCKER} -eq 0 ]; then
 | 
				
			||||||
 | 
					        echo -e "\n$COMPLETE 安装完成"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        echo -e "\n$ERROR 安装失败"
 | 
				
			||||||
 | 
					        case "${SYSTEM_FACTIONS}" in
 | 
				
			||||||
 | 
					        "${SYSTEM_DEBIAN}")
 | 
				
			||||||
 | 
					            echo -e "\n检查源文件:cat $Dir_DebianExtendSource/docker.list"
 | 
				
			||||||
 | 
					            echo -e '请尝试手动执行安装命令: apt-get install -y docker-ce docker-ce-cli containerd.io\n'
 | 
				
			||||||
 | 
					            echo ''
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
 | 
				
			||||||
 | 
					            echo -e "\n检查源文件:cat $Dir_RedHatRepos/docker.repo"
 | 
				
			||||||
 | 
					            echo -e '请尝试手动执行安装命令: yum install -y docker-ce docker-ce-cli containerd.io\n'
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        esac
 | 
				
			||||||
 | 
					        exit
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [[ $(systemctl is-active docker) != "active" ]]; then
 | 
				
			||||||
 | 
					        sleep 2
 | 
				
			||||||
 | 
					        systemctl disable --now docker >/dev/null 2>&1
 | 
				
			||||||
 | 
					        sleep 2
 | 
				
			||||||
 | 
					        systemctl enable --now docker >/dev/null 2>&1
 | 
				
			||||||
 | 
					        sleep 2
 | 
				
			||||||
 | 
					        if [[ $(systemctl is-active docker) != "active" ]]; then
 | 
				
			||||||
 | 
					            echo -e "\n$ERROR 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致"
 | 
				
			||||||
 | 
					            echo -e "\n请执行 systemctl start docker 或 service docker start 命令尝试启动"
 | 
				
			||||||
 | 
					            echo -e "\n官方安装文档:https://docs.docker.com/engine/install"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function ChooseMirrors() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function WelcomeTitle() {
 | 
				
			||||||
 | 
					        local system_name="${SYSTEM_PRETTY_NAME:-"${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER}"}"
 | 
				
			||||||
 | 
					        local arch="${SYSTEM_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 '|                                    |'
 | 
				
			||||||
 | 
					        echo -e '|    欢迎使用 Docker 一键安装脚本    |'
 | 
				
			||||||
 | 
					        echo -e '|                                    |'
 | 
				
			||||||
 | 
					        echo -e '+------------------------------------+'
 | 
				
			||||||
 | 
					        echo -e ''
 | 
				
			||||||
 | 
					        echo -e " 运行环境  ${BLUE}${system_name} ${arch}${PLAIN}"
 | 
				
			||||||
 | 
					        echo -e " 系统时间  ${BLUE}${date} ${timezone}${PLAIN}"
 | 
				
			||||||
 | 
					        echo -e ''
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    clear
 | 
				
			||||||
 | 
					    WelcomeTitle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## 是否手动选择安装版本
 | 
				
			||||||
 | 
					    local CHOICE_A=$(echo -e "${BOLD}└─ 是否安装最新版本的 Docker Engine? [Y/n] ${PLAIN}")
 | 
				
			||||||
 | 
					    read -p "${CHOICE_A}" INPUT
 | 
				
			||||||
 | 
					    [ -z ${INPUT} ] && INPUT=Y
 | 
				
			||||||
 | 
					    case $INPUT in
 | 
				
			||||||
 | 
					    [Yy] | [Yy][Ee][Ss])
 | 
				
			||||||
 | 
					        DOCKER_VERSION_INSTALL_LATEST="True"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    [Nn] | [Nn][Oo])
 | 
				
			||||||
 | 
					        DOCKER_VERSION_INSTALL_LATEST="False"
 | 
				
			||||||
 | 
					        SOURCE="download.docker.com"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        DOCKER_VERSION_INSTALL_LATEST="True"
 | 
				
			||||||
 | 
					        echo -e "\n$WARN 输入错误,默认安装最新版本!"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    if [ -z $SOURCE ]; then
 | 
				
			||||||
 | 
					        echo -e ''
 | 
				
			||||||
 | 
					        echo -e ' ❖   阿里云           1)'
 | 
				
			||||||
 | 
					        echo -e ' ❖   腾讯云           2)'
 | 
				
			||||||
 | 
					        echo -e ' ❖   华为云           3)'
 | 
				
			||||||
 | 
					        echo -e ' ❖   Azure            4)'
 | 
				
			||||||
 | 
					        echo -e ' ❖   网易             5)'
 | 
				
			||||||
 | 
					        echo -e ' ❖   清华大学         6)'
 | 
				
			||||||
 | 
					        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
 | 
				
			||||||
 | 
					    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)
 | 
				
			||||||
 | 
					        REGISTRY_SOURCE="registry.cn-hangzhou.aliyuncs.com"
 | 
				
			||||||
 | 
					        REGISTRY_SOURCE_OFFICIAL="False"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    3)
 | 
				
			||||||
 | 
					        REGISTRY_SOURCE="registry.cn-chengdu.aliyuncs.com"
 | 
				
			||||||
 | 
					        REGISTRY_SOURCE_OFFICIAL="False"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    4)
 | 
				
			||||||
 | 
					        REGISTRY_SOURCE="registry.cn-guangzhou.aliyuncs.com"
 | 
				
			||||||
 | 
					        REGISTRY_SOURCE_OFFICIAL="False"
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    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"
 | 
				
			||||||
 | 
					        REGISTRY_SOURCE_OFFICIAL="False"
 | 
				
			||||||
 | 
					        echo -e "\n$WARN 输入错误,默认使用 ${BLUE}阿里云(杭州)${PLAIN}!"
 | 
				
			||||||
 | 
					        sleep 1s
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    echo -e ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CloseFirewall
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 组合函数
 | 
				
			||||||
 | 
					function Combin_Function() {
 | 
				
			||||||
 | 
					    PermissionJudgment
 | 
				
			||||||
 | 
					    EnvJudgment
 | 
				
			||||||
 | 
					    ChooseMirrors
 | 
				
			||||||
 | 
					    InstallationEnvironment
 | 
				
			||||||
 | 
					    ConfigureDockerCEMirror
 | 
				
			||||||
 | 
					    DockerEngine
 | 
				
			||||||
 | 
					    ShowVersion
 | 
				
			||||||
 | 
					    AuthorSignature
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Combin_Function
 | 
				
			||||||
@@ -7,7 +7,7 @@ hide:
 | 
				
			|||||||
## :fontawesome-brands-docker: Docker 一键安装脚本
 | 
					## :fontawesome-brands-docker: Docker 一键安装脚本
 | 
				
			||||||
 | 
					
 | 
				
			||||||
``` bash
 | 
					``` bash
 | 
				
			||||||
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
 | 
					bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
!!! node "定义"
 | 
					!!! node "定义"
 | 
				
			||||||
@@ -15,3 +15,9 @@ bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInsta
 | 
				
			|||||||
    `Docker Hub` 容器镜像仓库,默认为官方提供的公共库,用于控制下载镜像的来源存储仓库,又称镜像加速器。
 | 
					    `Docker Hub` 容器镜像仓库,默认为官方提供的公共库,用于控制下载镜像的来源存储仓库,又称镜像加速器。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
脚本集成安装 `Docker Engine`,可手动选择安装版本、下载源、镜像加速器,支持海内外服务器环境和 `arm` 架构处理器环境使用
 | 
					脚本集成安装 `Docker Engine`,可手动选择安装版本、下载源、镜像加速器,支持海内外服务器环境和 `arm` 架构处理器环境使用
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					??? quote "原始方法"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ``` bash
 | 
				
			||||||
 | 
					    bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
 | 
				
			||||||
 | 
					    ```
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,15 @@
 | 
				
			|||||||
## 执行命令
 | 
					## 执行命令
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
### 国内使用(默认)
 | 
					### 国内使用(默认)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
``` bash
 | 
					``` bash
 | 
				
			||||||
bash <(curl -sSL https://linuxmirrors.cn/script.sh)
 | 
					bash <(curl -sSL https://linuxmirrors.cn/main.sh)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### 海外使用
 | 
					### 海外使用
 | 
				
			||||||
 | 
					
 | 
				
			||||||
``` bash
 | 
					``` bash
 | 
				
			||||||
bash <(curl -sSL https://linuxmirrors.cn/script.sh) --abroad
 | 
					bash <(curl -sSL https://linuxmirrors.cn/main.sh) --abroad
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
> 通过 `--abroad` 命令选项来使用海外软件源
 | 
					> 通过 `--abroad` 命令选项来使用海外软件源
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user