2021-10-08 00:03:44 +08:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
## Author: SuperManito
|
2023-06-24 11:06:30 +08:00
|
|
|
|
## Modified: 2023-06-24
|
2023-05-02 18:22:44 +08:00
|
|
|
|
## License: MIT
|
2023-06-24 11:06:30 +08:00
|
|
|
|
## GitHub: https://github.com/SuperManito/LinuxMirrors
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## Website: https://linuxmirrors.cn
|
2023-05-05 22:39:34 +08:00
|
|
|
|
|
2023-06-24 11:06:30 +08:00
|
|
|
|
## Docker CE 软件源列表
|
|
|
|
|
|
# 格式:"软件源名称@软件源地址"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
mirror_list_docker_ce=(
|
|
|
|
|
|
"阿里云@mirrors.aliyun.com/docker-ce"
|
|
|
|
|
|
"腾讯云@mirrors.tencent.com/docker-ce"
|
|
|
|
|
|
"华为云@repo.huaweicloud.com/docker-ce"
|
2023-06-24 11:06:30 +08:00
|
|
|
|
"微软 Azure 中国@mirror.azure.cn/docker-ce"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"网易@mirrors.163.com/docker-ce"
|
|
|
|
|
|
"清华大学@mirrors.tuna.tsinghua.edu.cn/docker-ce"
|
|
|
|
|
|
"北京大学@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"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2023-06-21 11:39:56 +08:00
|
|
|
|
## Docker Registry 镜像仓库列表
|
2023-06-24 11:06:30 +08:00
|
|
|
|
# 格式:"软件源名称@软件源地址"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
mirror_list_registry=(
|
2023-06-24 11:06:30 +08:00
|
|
|
|
"上海交通大学@docker.mirrors.sjtug.sjtu.edu.cn"
|
|
|
|
|
|
"网易@hub-mirror.c.163.com"
|
|
|
|
|
|
"道客 DaoCloud@f1361db2.m.daocloud.io"
|
|
|
|
|
|
"腾讯云@mirror.ccs.tencentyun.com"
|
|
|
|
|
|
"微软 Azure 中国@dockerhub.azk8s.com"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"阿里云(杭州)@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"
|
|
|
|
|
|
"阿里云(香港)@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"
|
2023-06-24 11:06:30 +08:00
|
|
|
|
"谷歌云@mirror.gcr.io"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"官方@registry.hub.docker.com"
|
|
|
|
|
|
)
|
2021-10-08 00:03:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 定义系统判定变量
|
|
|
|
|
|
SYSTEM_DEBIAN="Debian"
|
|
|
|
|
|
SYSTEM_UBUNTU="Ubuntu"
|
|
|
|
|
|
SYSTEM_KALI="Kali"
|
|
|
|
|
|
SYSTEM_REDHAT="RedHat"
|
|
|
|
|
|
SYSTEM_RHEL="RedHat"
|
|
|
|
|
|
SYSTEM_CENTOS="CentOS"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
SYSTEM_CENTOS_STREAM="CentOS Stream"
|
|
|
|
|
|
SYSTEM_ROCKY="Rocky"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
SYSTEM_ALMALINUX="AlmaLinux"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
SYSTEM_FEDORA="Fedora"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
SYSTEM_OPENCLOUDOS="OpenCloudOS"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
SYSTEM_OPENEULER="openEuler"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 定义目录和文件
|
2023-05-01 20:09:10 +08:00
|
|
|
|
File_LinuxRelease=/etc/os-release
|
|
|
|
|
|
File_RedHatRelease=/etc/redhat-release
|
2023-05-10 19:39:29 +08:00
|
|
|
|
File_OpenCloudOSRelease=/etc/opencloudos-release
|
2023-05-01 20:09:10 +08:00
|
|
|
|
File_openEulerRelease=/etc/openEuler-release
|
|
|
|
|
|
File_DebianVersion=/etc/debian_version
|
|
|
|
|
|
File_DebianSourceList=/etc/apt/sources.list
|
|
|
|
|
|
Dir_DebianExtendSource=/etc/apt/sources.list.d
|
2023-05-10 19:39:29 +08:00
|
|
|
|
Dir_YumRepos=/etc/yum.repos.d
|
2021-10-08 00:03:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 定义 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
|
|
|
|
|
|
|
2023-05-01 20:09:10 +08:00
|
|
|
|
## 定义颜色变量
|
2021-12-15 20:16:53 +08:00
|
|
|
|
RED='\033[31m'
|
|
|
|
|
|
GREEN='\033[32m'
|
|
|
|
|
|
YELLOW='\033[33m'
|
|
|
|
|
|
BLUE='\033[34m'
|
|
|
|
|
|
PLAIN='\033[0m'
|
|
|
|
|
|
BOLD='\033[1m'
|
|
|
|
|
|
SUCCESS='[\033[32mOK\033[0m]'
|
2022-04-20 12:32:41 +08:00
|
|
|
|
COMPLETE='[\033[32mDONE\033[0m]'
|
2021-12-15 20:16:53 +08:00
|
|
|
|
WARN='[\033[33mWARN\033[0m]'
|
|
|
|
|
|
ERROR='[\033[31mERROR\033[0m]'
|
|
|
|
|
|
WORKING='[\033[34m*\033[0m]'
|
|
|
|
|
|
|
2023-05-10 19:39:29 +08:00
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-08 00:03:44 +08:00
|
|
|
|
## 系统判定变量
|
|
|
|
|
|
function EnvJudgment() {
|
2023-05-01 20:09:10 +08:00
|
|
|
|
## 定义系统名称
|
|
|
|
|
|
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")"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## 判定当前系统派系(Debian/RedHat/openEuler/OpenCloudOS/openSUSE)
|
|
|
|
|
|
if [ -s $File_DebianVersion ]; then
|
2023-05-01 20:09:10 +08:00
|
|
|
|
SYSTEM_FACTIONS="${SYSTEM_DEBIAN}"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
elif [ -s $File_OpenCloudOSRelease ]; then
|
|
|
|
|
|
# OpenCloudOS 判断优先级需要高于 RedHat,因为8版本基于红帽而9版本不是
|
|
|
|
|
|
SYSTEM_FACTIONS="${SYSTEM_OPENCLOUDOS}"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
elif [ -s $File_openEulerRelease ]; then
|
|
|
|
|
|
SYSTEM_FACTIONS="${SYSTEM_OPENEULER}"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
elif [ -s $File_RedHatRelease ]; then
|
|
|
|
|
|
SYSTEM_FACTIONS="${SYSTEM_REDHAT}"
|
2021-10-17 09:09:00 +08:00
|
|
|
|
else
|
2023-05-10 19:39:29 +08:00
|
|
|
|
Output_Error "无法判断当前运行环境,当前系统不在本脚本的支持范围内"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
|
|
|
|
|
## 判定系统名称、版本、版本号
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2023-05-10 19:39:29 +08:00
|
|
|
|
if [ ! -x /usr/bin/lsb_release ]; then
|
|
|
|
|
|
apt-get install -y lsb-release
|
|
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
|
|
Output_Error "lsb-release 软件包安装失败\n 本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统,因为正常情况下系统会自带该软件包,请自行安装后重新执行脚本!"
|
|
|
|
|
|
fi
|
|
|
|
|
|
fi
|
|
|
|
|
|
SYSTEM_JUDGMENT="$(lsb_release -is)"
|
2023-06-20 06:04:56 +08:00
|
|
|
|
SYSTEM_VERSION_CODENAME="${DEBIAN_CODENAME:-"$(lsb_release -cs)"}"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
|
|
|
|
|
"${SYSTEM_REDHAT}")
|
|
|
|
|
|
SYSTEM_JUDGMENT="$(cat $File_RedHatRelease | awk -F ' ' '{printf$1}')"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## Red Hat Enterprise Linux
|
|
|
|
|
|
cat $File_RedHatRelease | grep -q "${SYSTEM_RHEL}"
|
|
|
|
|
|
[ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_RHEL}"
|
|
|
|
|
|
## CentOS Stream
|
2023-05-01 20:09:10 +08:00
|
|
|
|
cat $File_RedHatRelease | grep -q "${SYSTEM_CENTOS_STREAM}"
|
|
|
|
|
|
[ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_CENTOS_STREAM}"
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_OPENCLOUDOS}")
|
|
|
|
|
|
SYSTEM_JUDGMENT="${SYSTEM_OPENCLOUDOS}"
|
|
|
|
|
|
;;
|
2023-05-01 20:09:10 +08:00
|
|
|
|
"${SYSTEM_OPENEULER}")
|
|
|
|
|
|
SYSTEM_JUDGMENT="${SYSTEM_OPENEULER}"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
## 判定系统处理器架构
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case $(uname -m) in
|
2021-10-08 00:03:44 +08:00
|
|
|
|
x86_64)
|
2021-12-15 20:16:53 +08:00
|
|
|
|
SYSTEM_ARCH="x86_64"
|
|
|
|
|
|
SOURCE_ARCH="amd64"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
aarch64)
|
2021-12-15 20:16:53 +08:00
|
|
|
|
SYSTEM_ARCH="ARM64"
|
|
|
|
|
|
SOURCE_ARCH="arm64"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
armv7l)
|
2021-12-15 20:16:53 +08:00
|
|
|
|
SYSTEM_ARCH="ARMv7"
|
|
|
|
|
|
SOURCE_ARCH="armhf"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
armv6l)
|
2021-12-15 20:16:53 +08:00
|
|
|
|
SYSTEM_ARCH="ARMv6"
|
|
|
|
|
|
SOURCE_ARCH="armhf"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
2021-12-15 20:16:53 +08:00
|
|
|
|
i386 | i686)
|
2023-05-10 19:39:29 +08:00
|
|
|
|
Output_Error "Docker Engine 不支持安装在 x86_32 架构的环境上!"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
*)
|
2023-05-01 20:09:10 +08:00
|
|
|
|
SYSTEM_ARCH=$(uname -m)
|
2021-10-08 00:03:44 +08:00
|
|
|
|
SOURCE_ARCH=armhf
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
## 定义软件源分支名称
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_JUDGMENT}" in
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${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}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
SOURCE_BRANCH="centos"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_RHEL}")
|
|
|
|
|
|
SOURCE_BRANCH="rhel"
|
|
|
|
|
|
;;
|
|
|
|
|
|
"${SYSTEM_KALI}")
|
|
|
|
|
|
# Kali 使用 Debian 12 的 docker ce 源
|
|
|
|
|
|
SOURCE_BRANCH="debian"
|
|
|
|
|
|
SYSTEM_VERSION_CODENAME="bullseye"
|
|
|
|
|
|
;;
|
2023-05-01 20:09:10 +08:00
|
|
|
|
*)
|
2023-05-10 19:39:29 +08:00
|
|
|
|
Output_Error "当前系统不在本脚本的支持范围内"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
2021-10-08 00:03:44 +08:00
|
|
|
|
## 定义软件源同步/更新文字
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
SYNC_TXT="更新"
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
*)
|
2021-10-08 00:03:44 +08:00
|
|
|
|
SYNC_TXT="同步"
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-05-10 19:39:29 +08:00
|
|
|
|
function ChooseMirrors() {
|
|
|
|
|
|
## 打印软件源列表
|
|
|
|
|
|
function PrintMirrorsList() {
|
|
|
|
|
|
local tmp_mirror_name tmp_mirror_url arr_num default_mirror_name_length tmp_mirror_name_length tmp_spaces_nums a i j
|
|
|
|
|
|
## 计算字符串长度
|
|
|
|
|
|
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
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
2023-05-10 19:39:29 +08:00
|
|
|
|
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
|
2023-06-21 11:39:56 +08:00
|
|
|
|
local CHOICE_C=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker Registry 源 [ 1-$(eval echo \${#$mirror_list_name[@]}) ]:${PLAIN}")
|
2023-05-10 19:39:29 +08:00
|
|
|
|
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
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
|
|
|
|
|
*)
|
2023-05-10 19:39:29 +08:00
|
|
|
|
echo -e "\n$WARN 请输入数字序号以选择你想使用的软件源!"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
2023-05-10 19:39:29 +08:00
|
|
|
|
done
|
|
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 关闭防火墙和SELinux
|
|
|
|
|
|
function CloseFirewall() {
|
|
|
|
|
|
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 [[ "$(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}")
|
|
|
|
|
|
read -p "${CHOICE}" INPUT
|
|
|
|
|
|
[[ -z "${INPUT}" ]] && INPUT=Y
|
|
|
|
|
|
case "${INPUT}" in
|
|
|
|
|
|
[Yy] | [Yy][Ee][Ss])
|
|
|
|
|
|
Main
|
|
|
|
|
|
;;
|
|
|
|
|
|
[Nn] | [Nn][Oo]) ;;
|
|
|
|
|
|
*)
|
|
|
|
|
|
echo -e "\n$WARN 输入错误,默认不关闭!"
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
fi
|
2023-05-01 20:09:10 +08:00
|
|
|
|
fi
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 安装环境包
|
2023-05-10 19:39:29 +08:00
|
|
|
|
function EnvironmentInstall() {
|
2023-05-01 20:09:10 +08:00
|
|
|
|
## 删除原有源
|
|
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
|
|
|
|
|
sed -i '/docker-ce/d' $File_DebianSourceList
|
|
|
|
|
|
rm -rf $Dir_DebianExtendSource/docker.list
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
|
|
|
|
|
rm -rf $Dir_YumRepos/*docker*.repo
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
2023-05-10 19:39:29 +08:00
|
|
|
|
echo -e "\n$WORKING 开始${SYNC_TXT}软件源...\n"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
apt-get update
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
yum makecache
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
VERIFICATION_SOURCESYNC=$?
|
|
|
|
|
|
if [ ${VERIFICATION_SOURCESYNC} -ne 0 ]; then
|
2023-05-10 19:39:29 +08:00
|
|
|
|
Output_Error "软件源${SYNC_TXT}出错,请先确保软件包管理工具可用!"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
2022-03-17 21:34:57 +08:00
|
|
|
|
echo -e "\n$COMPLETE 软件源${SYNC_TXT}结束\n"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${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 dnf-utils device-mapper-persistent-data lvm2
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
2021-10-08 00:03:44 +08:00
|
|
|
|
esac
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 卸载旧版本的 Docker Engine
|
|
|
|
|
|
function RemoveOldVersion() {
|
|
|
|
|
|
systemctl disable --now docker >/dev/null 2>&1
|
|
|
|
|
|
sleep 2s
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2023-06-19 19:37:01 +08:00
|
|
|
|
apt-get remove -y docker* containerd.io podman* runc
|
2021-10-08 00:03:44 +08:00
|
|
|
|
apt-get autoremove -y >/dev/null 2>&1
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
2023-06-19 20:35:50 +08:00
|
|
|
|
yum remove -y docker* containerd.io podman* runc
|
2021-10-08 00:03:44 +08:00
|
|
|
|
yum autoremove -y >/dev/null 2>&1
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 配置 Docker CE 源
|
|
|
|
|
|
function ConfigureDockerCEMirror() {
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2023-06-19 19:37:01 +08:00
|
|
|
|
## 安装密钥
|
|
|
|
|
|
apt-key del 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 >/dev/null 2>&1 # 删除旧的密钥
|
|
|
|
|
|
[ -f /etc/apt/keyrings/docker.gpg ] && rm -rf /etc/apt/keyrings/docker.gpg
|
|
|
|
|
|
install -m 0755 -d /etc/apt/keyrings
|
|
|
|
|
|
curl -fsSL https://${SOURCE}/linux/${SOURCE_BRANCH}/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg >/dev/null 2>&1
|
|
|
|
|
|
chmod a+r /etc/apt/keyrings/docker.gpg
|
|
|
|
|
|
## 添加源
|
|
|
|
|
|
echo "deb [arch=${SOURCE_ARCH} signed-by=/etc/apt/keyrings/docker.gpg] https://${SOURCE}/linux/${SOURCE_BRANCH} ${SYSTEM_VERSION_CODENAME} stable" | tee $Dir_DebianExtendSource/docker.list >/dev/null 2>&1
|
2023-05-01 20:09:10 +08:00
|
|
|
|
apt-get update
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
2023-05-01 20:09:10 +08:00
|
|
|
|
yum-config-manager -y --add-repo https://${SOURCE}/linux/${SOURCE_BRANCH}/docker-ce.repo
|
2023-05-10 19:39:29 +08:00
|
|
|
|
sed -i "s|download.docker.com|${SOURCE}|g" $Dir_YumRepos/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
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 安装 Docker Engine
|
|
|
|
|
|
function DockerEngine() {
|
2022-02-22 06:33:11 +08:00
|
|
|
|
## 导出可安装的版本列表
|
|
|
|
|
|
function Export_VersionList() {
|
2023-05-01 20:09:10 +08:00
|
|
|
|
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
|
2022-02-22 06:33:11 +08:00
|
|
|
|
grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
2023-05-01 20:09:10 +08:00
|
|
|
|
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
|
2022-02-22 06:33:11 +08:00
|
|
|
|
grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
rm -rf $DockerCEVersionFile $DockerCECLIVersionFile
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 安装
|
|
|
|
|
|
function Install() {
|
2023-05-10 19:39:29 +08:00
|
|
|
|
if [[ "${INSTALL_LATESTED_DOCKER}" == "true" ]]; then
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2023-06-19 19:37:01 +08:00
|
|
|
|
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
2022-02-22 06:33:11 +08:00
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
2023-06-19 19:37:01 +08:00
|
|
|
|
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
2022-02-22 06:33:11 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
else
|
|
|
|
|
|
Export_VersionList
|
2023-06-19 20:35:50 +08:00
|
|
|
|
echo -e "\n${GREEN} --------- 请选择你要安装的版本,如:20.10.24 ---------- ${PLAIN}\n"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
cat $DockerVersionFile
|
2023-06-19 20:35:50 +08:00
|
|
|
|
echo -e '\n注:以上可供选择的安装版本由官方源提供,此列表以外的版本则无法安装在当前操作系统上'
|
2022-02-22 06:33:11 +08:00
|
|
|
|
while true; do
|
2023-05-01 20:09:10 +08:00
|
|
|
|
local CHOICE=$(echo -e "\n${BOLD}└─ 请根据上面的列表,选择并输入你想要安装的具体版本号:${PLAIN}\n")
|
|
|
|
|
|
read -p "${CHOICE}" DOCKER_VERSION
|
2022-02-22 06:33:11 +08:00
|
|
|
|
echo ''
|
2023-05-10 19:39:29 +08:00
|
|
|
|
cat $DockerVersionFile | grep -Eqw "${DOCKER_VERSION}"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
if [ $? -eq 0 ]; then
|
2023-06-19 20:35:50 +08:00
|
|
|
|
echo "${DOCKER_VERSION}" | grep -Eqw '[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}'
|
2022-02-22 06:33:11 +08:00
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
|
rm -rf $DockerVersionFile
|
|
|
|
|
|
break
|
|
|
|
|
|
else
|
2022-03-17 21:34:57 +08:00
|
|
|
|
echo -e "$ERROR 请输入正确的版本号!"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
fi
|
|
|
|
|
|
else
|
2022-03-17 21:34:57 +08:00
|
|
|
|
echo -e "$ERROR 输入错误请重新输入!"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
fi
|
|
|
|
|
|
done
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2023-05-10 19:39:29 +08:00
|
|
|
|
CheckVersion="$(echo ${DOCKER_VERSION} | cut -c1-2)"
|
|
|
|
|
|
CheckSubversion="$(echo ${DOCKER_VERSION} | cut -c4-5)"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
case ${CheckVersion} in
|
|
|
|
|
|
18)
|
|
|
|
|
|
if [ ${CheckSubversion} == "09" ]; then
|
|
|
|
|
|
INSTALL_JUDGMENT="5:"
|
|
|
|
|
|
else
|
|
|
|
|
|
INSTALL_JUDGMENT=""
|
|
|
|
|
|
fi
|
|
|
|
|
|
;;
|
|
|
|
|
|
*)
|
2023-05-01 20:09:10 +08:00
|
|
|
|
INSTALL_JUDGMENT="5:"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
2023-06-19 19:37:01 +08:00
|
|
|
|
apt-get install -y docker-ce=${INSTALL_JUDGMENT}${DOCKER_VERSION}* docker-ce-cli=5:${DOCKER_VERSION}* containerd.io docker-buildx-plugin docker-compose-plugin
|
2022-02-22 06:33:11 +08:00
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
2023-06-19 19:37:01 +08:00
|
|
|
|
yum install -y docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io docker-buildx-plugin docker-compose-plugin
|
2022-02-22 06:33:11 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-06-21 11:39:56 +08:00
|
|
|
|
## 修改 Docker Registry 源
|
2023-05-10 19:39:29 +08:00
|
|
|
|
function RegistryMirror() {
|
|
|
|
|
|
if [[ "${REGISTRY_SOURCEL}" != "registry.hub.docker.com" ]]; then
|
2022-02-22 06:33:11 +08:00
|
|
|
|
if [ -d $DockerDir ] && [ -e $DockerConfig ]; then
|
|
|
|
|
|
if [ -e $DockerConfigBackup ]; then
|
2023-05-10 19:39:29 +08:00
|
|
|
|
if [[ "${IGNORE_BACKUP_TIPS}" == "false" ]]; 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
|
|
|
|
|
|
fi
|
2022-02-22 06:33:11 +08:00
|
|
|
|
else
|
2023-05-01 20:09:10 +08:00
|
|
|
|
cp -rvf $DockerConfig $DockerConfigBackup 2>&1
|
2022-03-17 21:34:57 +08:00
|
|
|
|
echo -e "\n$COMPLETE 已备份原有 Docker 配置文件至 $DockerConfigBackup\n"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
fi
|
|
|
|
|
|
sleep 2s
|
|
|
|
|
|
else
|
|
|
|
|
|
mkdir -p $DockerDir >/dev/null 2>&1
|
|
|
|
|
|
touch $DockerConfig
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo -e '{\n "registry-mirrors": ["https://SOURCE"]\n}' >$DockerConfig
|
2023-06-19 19:37:01 +08:00
|
|
|
|
sed -i "s|SOURCE|${SOURCE_REGISTRY}|g" $DockerConfig
|
2022-02-22 06:33:11 +08:00
|
|
|
|
systemctl daemon-reload
|
|
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 判定是否已安装
|
2023-05-01 20:09:10 +08:00
|
|
|
|
case "${SYSTEM_FACTIONS}" in
|
|
|
|
|
|
"${SYSTEM_DEBIAN}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
dpkg -l | grep docker-ce-cli -q
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
rpm -qa | grep docker-ce-cli -q
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
if [ $? -eq 0 ]; then
|
2022-02-22 06:33:11 +08:00
|
|
|
|
Export_VersionList
|
2023-05-01 20:09:10 +08:00
|
|
|
|
DOCKER_INSTALLED_VERSION=$(docker -v | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1)
|
2023-05-10 19:39:29 +08:00
|
|
|
|
if [[ "${DOCKER_INSTALLED_VERSION}" == "${DOCKER_VERSION_LATEST}" ]]; then
|
|
|
|
|
|
if [[ "${INSTALL_LATESTED_DOCKER}" == "true" ]]; then
|
2022-03-17 21:34:57 +08:00
|
|
|
|
echo -e "\n$COMPLETE 检测到已安装最新版本的 Docker Engine,跳过安装"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
RegistryMirror
|
2022-10-28 07:13:10 +08:00
|
|
|
|
if [[ $(systemctl is-active docker) == "active" ]]; then
|
2021-10-08 00:03:44 +08:00
|
|
|
|
systemctl restart docker
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo ''
|
|
|
|
|
|
systemctl enable --now docker >/dev/null 2>&1
|
2023-05-10 19:39:29 +08:00
|
|
|
|
CheckVersion
|
|
|
|
|
|
RunEnd
|
2021-10-08 00:03:44 +08:00
|
|
|
|
exit
|
|
|
|
|
|
else
|
2023-05-01 20:09:10 +08:00
|
|
|
|
local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
|
|
|
|
|
else
|
2023-05-10 19:39:29 +08:00
|
|
|
|
if [[ "${INSTALL_LATESTED_DOCKER}" == "true" ]]; then
|
2023-05-01 20:09:10 +08:00
|
|
|
|
local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本? [Y/n] ${PLAIN}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
else
|
2023-05-01 20:09:10 +08:00
|
|
|
|
local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}")
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
|
|
|
|
|
fi
|
2023-05-01 20:09:10 +08:00
|
|
|
|
read -p "${CHOICE}" INPUT
|
2023-05-10 19:39:29 +08:00
|
|
|
|
[[ -z "${INPUT}" ]] && INPUT=Y
|
2021-10-08 00:03:44 +08:00
|
|
|
|
case $INPUT in
|
2021-10-08 00:16:12 +08:00
|
|
|
|
[Yy] | [Yy][Ee][Ss])
|
2023-05-12 22:00:40 +08:00
|
|
|
|
echo -en "\n$WORKING 正在卸载之前的版本...\n"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
RemoveOldVersion
|
2023-05-12 22:00:40 +08:00
|
|
|
|
echo -e "\n$COMPLETE 卸载完毕\n"
|
2022-02-22 06:33:11 +08:00
|
|
|
|
Install
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
2021-10-08 00:16:12 +08:00
|
|
|
|
[Nn] | [Nn][Oo]) ;;
|
2021-10-08 00:03:44 +08:00
|
|
|
|
*)
|
2022-03-17 21:34:57 +08:00
|
|
|
|
echo -e "\n$WARN 输入错误,默认不覆盖安装!\n"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
rm -rf $DockerVersionFile
|
|
|
|
|
|
else
|
|
|
|
|
|
RemoveOldVersion
|
2022-02-22 06:33:11 +08:00
|
|
|
|
Install
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
2023-05-10 19:39:29 +08:00
|
|
|
|
RegistryMirror
|
2021-10-08 00:03:44 +08:00
|
|
|
|
systemctl stop docker >/dev/null 2>&1
|
|
|
|
|
|
systemctl enable --now docker >/dev/null 2>&1
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 查看版本并验证安装结果
|
2023-05-10 19:39:29 +08:00
|
|
|
|
function CheckVersion() {
|
|
|
|
|
|
if [ -x /usr/bin/docker ]; then
|
2023-06-09 12:27:21 +08:00
|
|
|
|
echo -en "\n验证安装版本:"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
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"
|
2023-06-19 19:37:01 +08:00
|
|
|
|
echo -e '请尝试手动执行安装命令: apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n'
|
2023-05-10 19:39:29 +08:00
|
|
|
|
echo ''
|
|
|
|
|
|
;;
|
|
|
|
|
|
"${SYSTEM_REDHAT}" | "${SYSTEM_OPENCLOUDOS}" | "${SYSTEM_OPENEULER}")
|
|
|
|
|
|
echo -e "\n检查源文件:cat $Dir_YumRepos/docker.repo"
|
2023-06-19 19:37:01 +08:00
|
|
|
|
echo -e '请尝试手动执行安装命令: yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n'
|
2023-05-10 19:39:29 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
2022-11-02 06:31:59 +08:00
|
|
|
|
if [[ $(systemctl is-active docker) != "active" ]]; then
|
2023-05-10 19:39:29 +08:00
|
|
|
|
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
|
2023-05-12 22:00:40 +08:00
|
|
|
|
echo -e "\n$ERROR 检测到 Docker 服务启动异常,可能由于重复安装导致"
|
|
|
|
|
|
echo -e "\n${YELLOW} 请执行 "systemctl start docker" 或 "service docker start" 命令尝试启动,如若报错请尝试重新执行本脚本${PLAIN}"
|
2023-05-10 19:39:29 +08:00
|
|
|
|
fi
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
2023-05-10 19:39:29 +08:00
|
|
|
|
else
|
|
|
|
|
|
echo -e "\n$ERROR 安装失败\n"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## 运行结束
|
|
|
|
|
|
function RunEnd() {
|
|
|
|
|
|
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[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 ' \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 ' \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 ' \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 ' \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 " \033[1;34mPowered by linuxmirrors.cn\033[0m\n"
|
|
|
|
|
|
}
|
2023-05-01 20:09:10 +08:00
|
|
|
|
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## 处理命令选项
|
|
|
|
|
|
function CommandOptions() {
|
|
|
|
|
|
## 命令帮助
|
|
|
|
|
|
function Output_Help_Info() {
|
|
|
|
|
|
echo -e "
|
2023-06-20 06:04:56 +08:00
|
|
|
|
命令选项(参数名/含义/参数值):
|
2023-05-02 18:22:44 +08:00
|
|
|
|
|
2023-05-10 19:39:29 +08:00
|
|
|
|
--source 指定 Docker CE 源地址 地址
|
2023-06-21 11:39:56 +08:00
|
|
|
|
--source-registry 指定 Docker Registry 源地址 地址
|
2023-06-20 06:04:56 +08:00
|
|
|
|
--codename 指定 Debian 系操作系统的版本名称 版本名
|
2023-05-10 19:39:29 +08:00
|
|
|
|
--install-latested 控制是否安装最新版本的 Docker Engine true 或 false
|
|
|
|
|
|
--ignore-backup-tips 忽略覆盖备份提示 无
|
|
|
|
|
|
|
|
|
|
|
|
问题报告 https://github.com/SuperManito/LinuxMirrors/issues
|
|
|
|
|
|
"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
}
|
2023-05-10 19:39:29 +08:00
|
|
|
|
|
|
|
|
|
|
## 判断参数
|
|
|
|
|
|
while [ $# -gt 0 ]; do
|
2023-05-25 06:44:54 +08:00
|
|
|
|
case "$1" in
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## 指定 Docker CE 软件源地址
|
|
|
|
|
|
--source)
|
2023-05-25 06:44:54 +08:00
|
|
|
|
if [ "$2" ]; then
|
2023-05-10 19:39:29 +08:00
|
|
|
|
echo "$2" | grep -Eq "\-|\(|\)|\[|\]|\{|\}"
|
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
|
Output_Error "检测到无效参数值 ${BLUE}$2${PLAIN} ,请输入有效的地址!"
|
|
|
|
|
|
else
|
|
|
|
|
|
SOURCE="$2"
|
|
|
|
|
|
shift
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
Output_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定软件源地址!"
|
|
|
|
|
|
fi
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
2023-06-21 11:39:56 +08:00
|
|
|
|
## 指定 Docker Registry 仓库地址
|
2023-05-10 19:39:29 +08:00
|
|
|
|
--source-registry)
|
2023-05-25 06:44:54 +08:00
|
|
|
|
if [ "$2" ]; then
|
2023-05-10 19:39:29 +08:00
|
|
|
|
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
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
2023-06-20 06:04:56 +08:00
|
|
|
|
## 指定 Debian 版本名称
|
|
|
|
|
|
--codename)
|
|
|
|
|
|
if [ "$2" ]; then
|
|
|
|
|
|
DEBIAN_CODENAME="$2"
|
|
|
|
|
|
shift
|
|
|
|
|
|
else
|
|
|
|
|
|
Output_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定版本名称!"
|
|
|
|
|
|
fi
|
|
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## 安装最新版本
|
|
|
|
|
|
--install-latested)
|
2023-05-25 06:44:54 +08:00
|
|
|
|
if [ "$2" ]; then
|
|
|
|
|
|
case "$2" in
|
2023-05-10 19:39:29 +08:00
|
|
|
|
[Tt]rue | [Ff]alse)
|
|
|
|
|
|
INSTALL_LATESTED_DOCKER="${2,,}"
|
|
|
|
|
|
shift
|
|
|
|
|
|
;;
|
|
|
|
|
|
*)
|
|
|
|
|
|
Output_Error "检测到 ${BLUE}$2${PLAIN} 为无效参数值,请在该参数后指定 true 或 false 作为参数值!"
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
else
|
|
|
|
|
|
Output_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请在该参数后指定 true 或 false 作为参数值!"
|
|
|
|
|
|
fi
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## 忽略覆盖备份提示
|
|
|
|
|
|
--ignore-backup-tips)
|
|
|
|
|
|
IGNORE_BACKUP_TIPS="true"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
2023-05-10 19:39:29 +08:00
|
|
|
|
## 命令帮助
|
|
|
|
|
|
--help)
|
|
|
|
|
|
Output_Help_Info
|
|
|
|
|
|
exit
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
|
|
|
|
|
*)
|
2023-05-10 19:39:29 +08:00
|
|
|
|
Output_Error "检测到 ${BLUE}$1${PLAIN} 为无效参数,请确认后重新输入!"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
;;
|
|
|
|
|
|
esac
|
2023-05-10 19:39:29 +08:00
|
|
|
|
shift
|
|
|
|
|
|
done
|
|
|
|
|
|
## 给部分命令选项赋予默认值
|
|
|
|
|
|
IGNORE_BACKUP_TIPS="${IGNORE_BACKUP_TIPS:-"false"}"
|
2023-05-01 20:09:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
## 组合函数
|
|
|
|
|
|
function Combin_Function() {
|
|
|
|
|
|
PermissionJudgment
|
|
|
|
|
|
EnvJudgment
|
2023-05-10 19:39:29 +08:00
|
|
|
|
StartTitle
|
2023-05-01 20:09:10 +08:00
|
|
|
|
ChooseMirrors
|
2023-05-10 19:39:29 +08:00
|
|
|
|
CloseFirewall
|
|
|
|
|
|
EnvironmentInstall
|
2023-05-01 20:09:10 +08:00
|
|
|
|
ConfigureDockerCEMirror
|
|
|
|
|
|
DockerEngine
|
2023-05-10 19:39:29 +08:00
|
|
|
|
CheckVersion
|
|
|
|
|
|
RunEnd
|
2021-10-08 00:03:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-05-10 19:39:29 +08:00
|
|
|
|
CommandOptions "$@"
|
2021-10-08 00:03:44 +08:00
|
|
|
|
Combin_Function
|