mirror of
				https://gitee.com/SuperManito/LinuxMirrors
				synced 2025-11-04 08:20:28 +08:00 
			
		
		
		
	优化
This commit is contained in:
		@@ -1,6 +1,6 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
## Author: SuperManito
 | 
					## Author: SuperManito
 | 
				
			||||||
## Modified: 2022-02-16
 | 
					## Modified: 2022-02-22
 | 
				
			||||||
## License: GPL-2.0
 | 
					## License: GPL-2.0
 | 
				
			||||||
## Github: https://github.com/SuperManito/LinuxMirrors
 | 
					## Github: https://github.com/SuperManito/LinuxMirrors
 | 
				
			||||||
## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
					## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
				
			||||||
@@ -162,7 +162,7 @@ function PermissionJudgment() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 关闭 防火墙 和 SELINUX
 | 
					## 关闭 防火墙 和 SELINUX
 | 
				
			||||||
function TurnOffFirewall() {
 | 
					function CloseFirewall() {
 | 
				
			||||||
    systemctl status firewalld | grep running -q
 | 
					    systemctl status firewalld | grep running -q
 | 
				
			||||||
    if [ $? -eq 0 ]; then
 | 
					    if [ $? -eq 0 ]; then
 | 
				
			||||||
        CHOICE_C=$(echo -e "\n${BOLD}└ 是否关闭防火墙和 SELINUX? [Y/n] ${PLAIN}")
 | 
					        CHOICE_C=$(echo -e "\n${BOLD}└ 是否关闭防火墙和 SELINUX? [Y/n] ${PLAIN}")
 | 
				
			||||||
@@ -296,7 +296,6 @@ function ChangeMirrors() {
 | 
				
			|||||||
        DebianMirrors
 | 
					        DebianMirrors
 | 
				
			||||||
    elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then
 | 
					    elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then
 | 
				
			||||||
        RedHatMirrors
 | 
					        RedHatMirrors
 | 
				
			||||||
        yum clean all >/dev/null 2>&1
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    echo -e "\n${WORKING} 开始${SYNC_TXT}软件源...\n"
 | 
					    echo -e "\n${WORKING} 开始${SYNC_TXT}软件源...\n"
 | 
				
			||||||
    case ${SYSTEM_FACTIONS} in
 | 
					    case ${SYSTEM_FACTIONS} in
 | 
				
			||||||
@@ -418,18 +417,28 @@ function RedHatMirrors() {
 | 
				
			|||||||
    ## 修改源
 | 
					    ## 修改源
 | 
				
			||||||
    if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_CENTOS} -o ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]; then
 | 
					    if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_CENTOS} -o ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]; then
 | 
				
			||||||
        sed -i 's|^mirrorlist=|#mirrorlist=|g' $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
					        sed -i 's|^mirrorlist=|#mirrorlist=|g' $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ## CentOS 8 操作系统版本结束了生命周期(EOL),Linux 社区已不再维护该操作系统版本,最终版本为 8.5.2011
 | 
					        ## CentOS 8 操作系统版本结束了生命周期(EOL),Linux 社区已不再维护该操作系统版本,最终版本为 8.5.2011
 | 
				
			||||||
        ## 原 centos 镜像已被官方移动,从 2022-02 开始切换至 centos-vault 源
 | 
					        ## 原 centos 镜像中的 CentOS 8 相关内容已被官方移动,从 2022-02 开始切换至 centos-vault 源
 | 
				
			||||||
        [ ${CENTOS_VERSION} -eq "8" ] && sed -i 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=http://mirror.centos.org/centos-vault|g' $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
					        if [ ${CENTOS_VERSION} -eq "8" ]; then
 | 
				
			||||||
 | 
					            sed -i 's|^#baseurl=http://mirror.centos.org/$contentdir|#baseurl=http://mirror.centos.org/centos-vault|g' $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
				
			||||||
 | 
					            sed -i "s/\$releasever/8.5.2111/g" ${SYSTEM_CENTOS}-*
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ## WEB协议
 | 
				
			||||||
        sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
					        sed -i "s|^#baseurl=http|baseurl=${WEB_PROTOCOL}|g" $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
				
			||||||
        ## 更换软件源
 | 
					        ## 更换软件源
 | 
				
			||||||
        sed -i "s|mirror.centos.org|${SOURCE}|g" $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
					        sed -i "s|mirror.centos.org|${SOURCE}|g" $RedHatReposDir/${SYSTEM_CENTOS}-*
 | 
				
			||||||
        ## 修改版本号
 | 
					
 | 
				
			||||||
        if [ ${CENTOS_VERSION} -eq "8" ]; then
 | 
					        ## Red Hat Enterprise Linux 修改版本号
 | 
				
			||||||
            sed -i "s/\$releasever/8.5.2111/g" ${SYSTEM_CENTOS}-*
 | 
					        if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]; then
 | 
				
			||||||
        elif [ ${CENTOS_VERSION} -eq "7" ]; then
 | 
					            if [ ${CENTOS_VERSION} -eq "8" ]; then
 | 
				
			||||||
            sed -i "s/\$releasever/7.9.2009/g" ${SYSTEM_CENTOS}-*
 | 
					                sed -i "s/\$releasever/8.5.2111/g" ${SYSTEM_CENTOS}-*
 | 
				
			||||||
 | 
					            elif [ ${CENTOS_VERSION} -eq "7" ]; then
 | 
				
			||||||
 | 
					                sed -i "s/\$releasever/7/g" ${SYSTEM_CENTOS}-*
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ## 安装/更换基于 RHEL/CentOS 的 EPEL 扩展国内源
 | 
					        ## 安装/更换基于 RHEL/CentOS 的 EPEL 扩展国内源
 | 
				
			||||||
        [ ${EPEL_INSTALL} = "True" ] && EPELMirrors
 | 
					        [ ${EPEL_INSTALL} = "True" ] && EPELMirrors
 | 
				
			||||||
    elif [ ${SYSTEM_JUDGMENT} = ${SYSTEM_FEDORA} ]; then
 | 
					    elif [ ${SYSTEM_JUDGMENT} = ${SYSTEM_FEDORA} ]; then
 | 
				
			||||||
@@ -449,6 +458,8 @@ function RedHatMirrors() {
 | 
				
			|||||||
            $RedHatReposDir/${SOURCE_BRANCH}-updates-testing.repo \
 | 
					            $RedHatReposDir/${SOURCE_BRANCH}-updates-testing.repo \
 | 
				
			||||||
            $RedHatReposDir/${SOURCE_BRANCH}-updates-testing-modular.repo
 | 
					            $RedHatReposDir/${SOURCE_BRANCH}-updates-testing-modular.repo
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    ## 清理 YUM 缓存
 | 
				
			||||||
 | 
					    yum clean all >/dev/null 2>&1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 安装/更换基于 RHEL/CentOS 的 EPEL (Extra Packages for Enterprise Linux) 扩展国内源
 | 
					## 安装/更换基于 RHEL/CentOS 的 EPEL (Extra Packages for Enterprise Linux) 扩展国内源
 | 
				
			||||||
@@ -616,7 +627,7 @@ function ChooseMirrors() {
 | 
				
			|||||||
    esac
 | 
					    esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ## 关闭 防火墙 和 SELINUX
 | 
					    ## 关闭 防火墙 和 SELINUX
 | 
				
			||||||
    [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ] && TurnOffFirewall
 | 
					    [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ] && CloseFirewall
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 生成 CentOS 官方 repo 源文件
 | 
					## 生成 CentOS 官方 repo 源文件
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
## Author: SuperManito
 | 
					## Author: SuperManito
 | 
				
			||||||
## Modified: 2022-02-16
 | 
					## Modified: 2022-02-22
 | 
				
			||||||
## License: GPL-2.0
 | 
					## License: GPL-2.0
 | 
				
			||||||
## Github: https://github.com/SuperManito/LinuxMirrors
 | 
					## Github: https://github.com/SuperManito/LinuxMirrors
 | 
				
			||||||
## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
					## Gitee: https://gitee.com/SuperManito/LinuxMirrors
 | 
				
			||||||
@@ -95,7 +95,7 @@ function EnvJudgment() {
 | 
				
			|||||||
    ## 定义系统名称
 | 
					    ## 定义系统名称
 | 
				
			||||||
    SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")
 | 
					    SYSTEM_NAME=$(cat $LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")
 | 
				
			||||||
    ## 定义系统版本号
 | 
					    ## 定义系统版本号
 | 
				
			||||||
    SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease |  grep -E "VERSION_ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")
 | 
					    SYSTEM_VERSION_NUMBER=$(cat $LinuxRelease | grep -E "VERSION_ID=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")
 | 
				
			||||||
    ## 判定系统名称、版本、版本号
 | 
					    ## 判定系统名称、版本、版本号
 | 
				
			||||||
    case ${SYSTEM_FACTIONS} in
 | 
					    case ${SYSTEM_FACTIONS} in
 | 
				
			||||||
    Debian)
 | 
					    Debian)
 | 
				
			||||||
@@ -172,7 +172,7 @@ function NetWorkJudgment() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 关闭防火墙
 | 
					## 关闭防火墙
 | 
				
			||||||
function TurnOffFirewall() {
 | 
					function CloseFirewall() {
 | 
				
			||||||
    systemctl status firewalld | grep running -q
 | 
					    systemctl status firewalld | grep running -q
 | 
				
			||||||
    if [ $? -eq 0 ]; then
 | 
					    if [ $? -eq 0 ]; then
 | 
				
			||||||
        systemctl disable --now firewalld >/dev/null 2>&1
 | 
					        systemctl disable --now firewalld >/dev/null 2>&1
 | 
				
			||||||
@@ -233,23 +233,6 @@ function RemoveOldVersion() {
 | 
				
			|||||||
    esac
 | 
					    esac
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 查看可供安装的 Docker Engine 版本清单
 | 
					 | 
				
			||||||
function DockerEngineVersionList() {
 | 
					 | 
				
			||||||
    case ${SYSTEM_FACTIONS} in
 | 
					 | 
				
			||||||
    Debian)
 | 
					 | 
				
			||||||
        apt-cache madison docker-ce | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCEVersionFile
 | 
					 | 
				
			||||||
        apt-cache madison docker-ce-cli | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCECLIVersionFile
 | 
					 | 
				
			||||||
        grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    RedHat)
 | 
					 | 
				
			||||||
        yum list docker-ce --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCEVersionFile
 | 
					 | 
				
			||||||
        yum list docker-ce-cli --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCECLIVersionFile
 | 
					 | 
				
			||||||
        grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    rm -rf $DockerCEVersionFile $DockerCECLIVersionFile
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## 配置 Docker CE 源
 | 
					## 配置 Docker CE 源
 | 
				
			||||||
function ConfigureDockerCEMirror() {
 | 
					function ConfigureDockerCEMirror() {
 | 
				
			||||||
    if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
					    if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
				
			||||||
@@ -281,6 +264,118 @@ function ConfigureDockerCEMirror() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 安装 Docker Engine
 | 
					## 安装 Docker Engine
 | 
				
			||||||
function DockerEngine() {
 | 
					function DockerEngine() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ## 导出可安装的版本列表
 | 
				
			||||||
 | 
					    function Export_VersionList() {
 | 
				
			||||||
 | 
					        case ${SYSTEM_FACTIONS} in
 | 
				
			||||||
 | 
					        Debian)
 | 
				
			||||||
 | 
					            apt-cache madison docker-ce | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCEVersionFile
 | 
				
			||||||
 | 
					            apt-cache madison docker-ce-cli | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCECLIVersionFile
 | 
				
			||||||
 | 
					            grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
 | 
					        RedHat)
 | 
				
			||||||
 | 
					            yum list docker-ce --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}" >$DockerCEVersionFile
 | 
				
			||||||
 | 
					            yum list docker-ce-cli --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9][0-9].[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
 | 
				
			||||||
 | 
					            Debian)
 | 
				
			||||||
 | 
					                apt-get install -y docker-ce docker-ce-cli containerd.io
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            RedHat)
 | 
				
			||||||
 | 
					                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
 | 
				
			||||||
 | 
					                CHOICE_F=$(echo -e "\n${BOLD}└ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n")
 | 
				
			||||||
 | 
					                read -p "${CHOICE_F}" 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,8,9].[0,1][0-9].[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
 | 
				
			||||||
 | 
					            Debian)
 | 
				
			||||||
 | 
					                CheckVersion=$(echo ${DOCKER_VERSION} | cut -c1-2)
 | 
				
			||||||
 | 
					                CheckSubversion=$(echo ${DOCKER_VERSION} | cut -c4-5)
 | 
				
			||||||
 | 
					                case ${CheckVersion} in
 | 
				
			||||||
 | 
					                21 | 20 | 19)
 | 
				
			||||||
 | 
					                    INSTALL_JUDGMENT="5:"
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                18)
 | 
				
			||||||
 | 
					                    if [ ${CheckSubversion} == "09" ]; then
 | 
				
			||||||
 | 
					                        INSTALL_JUDGMENT="5:"
 | 
				
			||||||
 | 
					                    else
 | 
				
			||||||
 | 
					                        INSTALL_JUDGMENT=""
 | 
				
			||||||
 | 
					                    fi
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                *)
 | 
				
			||||||
 | 
					                    INSTALL_JUDGMENT=""
 | 
				
			||||||
 | 
					                    ;;
 | 
				
			||||||
 | 
					                esac
 | 
				
			||||||
 | 
					                apt-get install -y docker-ce=${INSTALL_JUDGMENT}${DOCKER_VERSION}* docker-ce-cli=5:${DOCKER_VERSION}* containerd.io
 | 
				
			||||||
 | 
					                ;;
 | 
				
			||||||
 | 
					            RedHat)
 | 
				
			||||||
 | 
					                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
 | 
				
			||||||
 | 
					                    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])
 | 
				
			||||||
 | 
					                        cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1
 | 
				
			||||||
 | 
					                        ;;
 | 
				
			||||||
 | 
					                    [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
 | 
					                    *)
 | 
				
			||||||
 | 
					                        echo -e "\n${WARN} 输入错误,默认不覆盖!"
 | 
				
			||||||
 | 
					                        ;;
 | 
				
			||||||
 | 
					                    esac
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    cp -rf $DockerConfig $DockerConfigBackup >/dev/null 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
 | 
					    case ${SYSTEM_FACTIONS} in
 | 
				
			||||||
    Debian)
 | 
					    Debian)
 | 
				
			||||||
        dpkg -l | grep docker-ce-cli -q
 | 
					        dpkg -l | grep docker-ce-cli -q
 | 
				
			||||||
@@ -290,13 +385,13 @@ function DockerEngine() {
 | 
				
			|||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
    if [ $? -eq 0 ]; then
 | 
					    if [ $? -eq 0 ]; then
 | 
				
			||||||
        DockerEngineVersionList
 | 
					        Export_VersionList
 | 
				
			||||||
        DOCKER_INSTALLED_VERSION=$(docker -v | grep -Eo "[0-9][0-9].[0-9][0-9].[0-9]{1,2}")
 | 
					        DOCKER_INSTALLED_VERSION=$(docker -v | grep -Eo "[0-9][0-9].[0-9][0-9].[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 [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
				
			||||||
                echo -e "\n${SUCCESS} 检测到已安装最新版本的 Docker Engine,跳过安装"
 | 
					                echo -e "\n${SUCCESS} 检测到已安装最新版本的 Docker Engine,跳过安装"
 | 
				
			||||||
                ConfigureImageAccelerator
 | 
					                ConfigureMirror
 | 
				
			||||||
                systemctl status docker | grep running -q
 | 
					                systemctl status docker | grep running -q
 | 
				
			||||||
                if [ $? -eq 0 ]; then
 | 
					                if [ $? -eq 0 ]; then
 | 
				
			||||||
                    systemctl restart docker
 | 
					                    systemctl restart docker
 | 
				
			||||||
@@ -324,7 +419,7 @@ function DockerEngine() {
 | 
				
			|||||||
            echo -en "\n${WORKING} 正在卸载之前的版本..."
 | 
					            echo -en "\n${WORKING} 正在卸载之前的版本..."
 | 
				
			||||||
            RemoveOldVersion
 | 
					            RemoveOldVersion
 | 
				
			||||||
            echo -e "\n\n${SUCCESS} 卸载完毕\n"
 | 
					            echo -e "\n\n${SUCCESS} 卸载完毕\n"
 | 
				
			||||||
            DockerEngineInstall
 | 
					            Install
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        [Nn] | [Nn][Oo]) ;;
 | 
					        [Nn] | [Nn][Oo]) ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
@@ -334,103 +429,12 @@ function DockerEngine() {
 | 
				
			|||||||
        rm -rf $DockerVersionFile
 | 
					        rm -rf $DockerVersionFile
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        RemoveOldVersion
 | 
					        RemoveOldVersion
 | 
				
			||||||
        DockerEngineInstall
 | 
					        Install
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    ConfigureImageAccelerator
 | 
					    ConfigureMirror
 | 
				
			||||||
    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 DockerEngineInstall() {
 | 
					 | 
				
			||||||
    if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
 | 
					 | 
				
			||||||
        case ${SYSTEM_FACTIONS} in
 | 
					 | 
				
			||||||
        Debian)
 | 
					 | 
				
			||||||
            apt-get install -y docker-ce docker-ce-cli containerd.io
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        RedHat)
 | 
					 | 
				
			||||||
            yum install -y docker-ce docker-ce-cli containerd.io
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        esac
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        DockerEngineVersionList
 | 
					 | 
				
			||||||
        echo -e "\n${GREEN} --------- 请选择你要安装的版本,如:19.03.15 ---------- ${PLAIN}\n"
 | 
					 | 
				
			||||||
        cat $DockerVersionFile
 | 
					 | 
				
			||||||
        echo -e '\n注:以上可供选择的安装版本由官方源提供,若系统过新可能无法安装较旧的版本'
 | 
					 | 
				
			||||||
        while true; do
 | 
					 | 
				
			||||||
            CHOICE_F=$(echo -e "\n${BOLD}└ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n")
 | 
					 | 
				
			||||||
            read -p "${CHOICE_F}" 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,8,9].[0,1][0-9].[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
 | 
					 | 
				
			||||||
        Debian)
 | 
					 | 
				
			||||||
            CheckVersion=$(echo ${DOCKER_VERSION} | cut -c1-2)
 | 
					 | 
				
			||||||
            CheckSubversion=$(echo ${DOCKER_VERSION} | cut -c4-5)
 | 
					 | 
				
			||||||
            case ${CheckVersion} in
 | 
					 | 
				
			||||||
            21 | 20 | 19)
 | 
					 | 
				
			||||||
                INSTALL_JUDGMENT="5:"
 | 
					 | 
				
			||||||
                ;;
 | 
					 | 
				
			||||||
            18)
 | 
					 | 
				
			||||||
                if [ ${CheckSubversion} == "09" ]; then
 | 
					 | 
				
			||||||
                    INSTALL_JUDGMENT="5:"
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                    INSTALL_JUDGMENT=""
 | 
					 | 
				
			||||||
                fi
 | 
					 | 
				
			||||||
                ;;
 | 
					 | 
				
			||||||
            *)
 | 
					 | 
				
			||||||
                INSTALL_JUDGMENT=""
 | 
					 | 
				
			||||||
                ;;
 | 
					 | 
				
			||||||
            esac
 | 
					 | 
				
			||||||
            apt-get install -y docker-ce=${INSTALL_JUDGMENT}${DOCKER_VERSION}* docker-ce-cli=5:${DOCKER_VERSION}* containerd.io
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        RedHat)
 | 
					 | 
				
			||||||
            yum install -y docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
        esac
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## 修改 Docker Hub 源
 | 
					 | 
				
			||||||
function ConfigureImageAccelerator() {
 | 
					 | 
				
			||||||
    if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then
 | 
					 | 
				
			||||||
        if [ -d $DockerDir ] && [ -e $DockerConfig ]; then
 | 
					 | 
				
			||||||
            if [ -e $DockerConfigBackup ]; then
 | 
					 | 
				
			||||||
                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])
 | 
					 | 
				
			||||||
                    cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1
 | 
					 | 
				
			||||||
                    ;;
 | 
					 | 
				
			||||||
                [Nn] | [Nn][Oo]) ;;
 | 
					 | 
				
			||||||
                *)
 | 
					 | 
				
			||||||
                    echo -e "\n${WARN} 输入错误,默认不覆盖!"
 | 
					 | 
				
			||||||
                    ;;
 | 
					 | 
				
			||||||
                esac
 | 
					 | 
				
			||||||
            else
 | 
					 | 
				
			||||||
                cp -rf $DockerConfig $DockerConfigBackup >/dev/null 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
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 安装 Docker Compose
 | 
					## 安装 Docker Compose
 | 
				
			||||||
function DockerCompose() {
 | 
					function DockerCompose() {
 | 
				
			||||||
@@ -698,7 +702,7 @@ function ChooseMirrors() {
 | 
				
			|||||||
    esac
 | 
					    esac
 | 
				
			||||||
    echo -e ''
 | 
					    echo -e ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [ ${SYSTEM_FACTIONS} == ${SYSTEM_REDHAT} ] && TurnOffFirewall
 | 
					    [ ${SYSTEM_FACTIONS} == ${SYSTEM_REDHAT} ] && CloseFirewall
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Combin_Function
 | 
					Combin_Function
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user