更新并优化 Docker 一键安装脚本

This commit is contained in:
SuperManito
2023-05-01 20:09:10 +08:00
parent 4f3b2ce390
commit 5e0cc27418
3 changed files with 251 additions and 314 deletions

View File

@@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
## Author: SuperManito ## Author: SuperManito
## Modified: 2022-06-05 ## Modified: 2023-05-01
## 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
function AuthorSignature() { function AuthorSignature() {
echo -e "\n${GREEN} ------------ 脚本执行结束 ------------ ${PLAIN}\n" 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;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;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;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'
@@ -20,39 +20,37 @@ function AuthorSignature() {
} }
## 定义系统判定变量 ## 定义系统判定变量
DebianRelease="lsb_release"
ARCH=$(uname -m)
SYSTEM_DEBIAN="Debian" SYSTEM_DEBIAN="Debian"
SYSTEM_UBUNTU="Ubuntu" SYSTEM_UBUNTU="Ubuntu"
SYSTEM_KALI="Kali" SYSTEM_KALI="Kali"
SYSTEM_REDHAT="RedHat" SYSTEM_REDHAT="RedHat"
SYSTEM_RHEL="RedHat" SYSTEM_RHEL="RedHat"
SYSTEM_CENTOS="CentOS" SYSTEM_CENTOS="CentOS"
SYSTEM_CENTOS_STREAM="CentOS Stream"
SYSTEM_ROCKY="Rocky"
SYSTEM_FEDORA="Fedora" SYSTEM_FEDORA="Fedora"
SYSTEM_OPENEULER="openEuler"
## 定义目录和文件 ## 定义目录和文件
LinuxRelease=/etc/os-release File_LinuxRelease=/etc/os-release
RedHatRelease=/etc/redhat-release File_RedHatRelease=/etc/redhat-release
DebianVersion=/etc/debian_version File_openEulerRelease=/etc/openEuler-release
DebianSourceList=/etc/apt/sources.list File_DebianVersion=/etc/debian_version
DebianExtendListDir=/etc/apt/sources.list.d File_DebianSourceList=/etc/apt/sources.list
RedHatReposDir=/etc/yum.repos.d Dir_DebianExtendSource=/etc/apt/sources.list.d
SelinuxConfig=/etc/selinux/config Dir_RedHatRepos=/etc/yum.repos.d
Dir_openEulerRepos=/etc/yum.repos.d
Dir_openSUSERepos=/etc/zypp/repos.d
## 定义 Docker 相关变量 ## 定义 Docker 相关变量
DockerSourceList=$DebianExtendListDir/docker.list
DockerRepo=$RedHatReposDir/download.docker.com_linux_*.repo
DockerDir=/etc/docker DockerDir=/etc/docker
DockerConfig=$DockerDir/daemon.json DockerConfig=$DockerDir/daemon.json
DockerConfigBackup=$DockerDir/daemon.json.bak DockerConfigBackup=$DockerDir/daemon.json.bak
DockerCompose=/usr/local/bin/docker-compose
DockerVersionFile=docker-version.txt DockerVersionFile=docker-version.txt
DockerCEVersionFile=docker-ce-version.txt DockerCEVersionFile=docker-ce-version.txt
DockerCECLIVersionFile=docker-ce-cli-version.txt DockerCECLIVersionFile=docker-ce-cli-version.txt
PROXY_URL=https://ghproxy.com/
DOCKER_COMPOSE_VERSION=1.29.2
DOCKER_COMPOSE_DOWNLOAD_URL=https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-Linux-x86_64
## 定义颜色变量
RED='\033[31m' RED='\033[31m'
GREEN='\033[32m' GREEN='\033[32m'
YELLOW='\033[33m' YELLOW='\033[33m'
@@ -65,52 +63,44 @@ WARN='[\033[33mWARN\033[0m]'
ERROR='[\033[31mERROR\033[0m]' ERROR='[\033[31mERROR\033[0m]'
WORKING='[\033[34m*\033[0m]' WORKING='[\033[34m*\033[0m]'
## 组合函数
function Combin_Function() {
PermissionJudgment
NetWorkJudgment
EnvJudgment
ChooseMirrors
InstallationEnvironment
ConfigureDockerCEMirror
DockerEngine
DockerCompose
ShowVersion
AuthorSignature
}
## 系统判定变量 ## 系统判定变量
function EnvJudgment() { function EnvJudgment() {
## 判定当前系统基于 Debian or RedHat ## 定义系统名称
if [ -s $RedHatRelease ]; then SYSTEM_NAME="$(cat $File_LinuxRelease | grep -E "^NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")"
SYSTEM_FACTIONS=${SYSTEM_REDHAT} cat $File_LinuxRelease | grep "PRETTY_NAME=" -q
elif [ -s $DebianVersion ]; then [ $? -eq 0 ] && SYSTEM_PRETTY_NAME="$(cat $File_LinuxRelease | grep -E "^PRETTY_NAME=" | awk -F '=' '{print$2}' | sed "s/[\'\"]//g")"
SYSTEM_FACTIONS=${SYSTEM_DEBIAN} ## 定义系统版本号
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 else
echo -e "\n$ERROR 无法判断当前运行环境,请先确认本脚本针对当前操作系统是否适配!\n" echo -e "\n$ERROR 无法判断当前运行环境,请先确认本脚本针对当前操作系统是否适配!\n"
exit exit
fi fi
## 定义系统名称
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")
## 判定系统名称、版本、版本号 ## 判定系统名称、版本、版本号
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
SYSTEM_JUDGMENT=$(${DebianRelease} -is) SYSTEM_JUDGMENT=$(lsb_release -is)
SYSTEM_VERSION=$(${DebianRelease} -cs) SYSTEM_VERSION=$(lsb_release -cs)
;; ;;
RedHat) "${SYSTEM_REDHAT}")
SYSTEM_JUDGMENT=$(cat $RedHatRelease | sed 's/ //g' | cut -c1-6) SYSTEM_JUDGMENT="$(cat $File_RedHatRelease | awk -F ' ' '{printf$1}')"
if [[ ${SYSTEM_JUDGMENT} = ${SYSTEM_CENTOS} || ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]]; then cat $File_RedHatRelease | grep -q "${SYSTEM_CENTOS_STREAM}"
CENTOS_VERSION=$(echo ${SYSTEM_VERSION_NUMBER} | cut -c1) [ $? -eq 0 ] && SYSTEM_JUDGMENT="${SYSTEM_CENTOS_STREAM}"
else ;;
CENTOS_VERSION="" "${SYSTEM_OPENEULER}")
fi SYSTEM_JUDGMENT="${SYSTEM_OPENEULER}"
;; ;;
esac esac
## 判定系统处理器架构 ## 判定系统处理器架构
case ${ARCH} in case $(uname -m) in
x86_64) x86_64)
SYSTEM_ARCH="x86_64" SYSTEM_ARCH="x86_64"
SOURCE_ARCH="amd64" SOURCE_ARCH="amd64"
@@ -133,22 +123,25 @@ function EnvJudgment() {
exit exit
;; ;;
*) *)
SYSTEM_ARCH=${ARCH} SYSTEM_ARCH=$(uname -m)
SOURCE_ARCH=armhf SOURCE_ARCH=armhf
;; ;;
esac esac
## 定义软件源分支名称 ## 定义软件源分支名称
if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_RHEL} ]; then case "${SYSTEM_JUDGMENT}" in
"${SYSTEM_RHEL}" | "${SYSTEM_CENTOS_STREAM}" | "${SYSTEM_ROCKY}" | "${SYSTEM_OPENEULER}")
SOURCE_BRANCH="centos" SOURCE_BRANCH="centos"
else ;;
SOURCE_BRANCH=${SYSTEM_JUDGMENT,,} *)
fi SOURCE_BRANCH="$(echo "${SYSTEM_JUDGMENT,,}" | sed "s/ /-/g")"
;;
esac
## 定义软件源同步/更新文字 ## 定义软件源同步/更新文字
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
SYNC_TXT="更新" SYNC_TXT="更新"
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
SYNC_TXT="同步" SYNC_TXT="同步"
;; ;;
esac esac
@@ -157,43 +150,54 @@ function EnvJudgment() {
## 基础环境判断 ## 基础环境判断
function PermissionJudgment() { function PermissionJudgment() {
if [ $UID -ne 0 ]; then if [ $UID -ne 0 ]; then
echo -e "\n$ERROR 权限不足,请使用 Root 用户\n" echo -e "\n$ERROR 权限不足,请使用 Root 用户运行本脚本\n"
exit exit 1
fi
}
function NetWorkJudgment() {
ping -c 1 www.baidu.com >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "\n${RED} ----- Network connection error, please check the network environment and try again later! ----- ${PLAIN}\n"
exit
fi fi
} }
## 关闭防火墙 ## 关闭防火墙和SELinux
function CloseFirewall() { function CloseFirewall() {
if [[ $(systemctl is-active firewalld) == "active" ]]; then local SelinuxConf=/etc/selinux/config
systemctl disable --now firewalld >/dev/null 2>&1 if [ -x /usr/bin/systemctl ]; then
[ -s $SelinuxConfig ] && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" $SelinuxConfig && setenforce 0 >/dev/null 2>&1 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 fi
} }
## 安装环境包 ## 安装环境包
function InstallationEnvironment() { function InstallationEnvironment() {
case ${SYSTEM_FACTIONS} in ## 删除原有源
Debian) case "${SYSTEM_FACTIONS}" in
sed -i '/docker-ce/d' $DebianSourceList "${SYSTEM_DEBIAN}")
rm -rf $DockerSourceList sed -i '/docker-ce/d' $File_DebianSourceList
rm -rf $Dir_DebianExtendSource/docker.list
;; ;;
RedHat) "${SYSTEM_REDHAT}")
rm -rf $DockerRepo rm -rf $Dir_RedHatRepos/*docker*.repo
;;
"${SYSTEM_OPENEULER}")
rm -rf $Dir_openEulerRepos/*docker*.repo
;; ;;
esac esac
echo -e "${WORKING} 开始${SYNC_TXT}软件源...\n" echo -e "$WORKING 开始${SYNC_TXT}软件源...\n"
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
apt-get update apt-get update
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
yum makecache yum makecache
;; ;;
esac esac
@@ -203,13 +207,16 @@ function InstallationEnvironment() {
exit exit
fi fi
echo -e "\n$COMPLETE 软件源${SYNC_TXT}结束\n" echo -e "\n$COMPLETE 软件源${SYNC_TXT}结束\n"
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
;; ;;
RedHat) "${SYSTEM_REDHAT}")
yum install -y yum-utils device-mapper-persistent-data lvm2 yum install -y yum-utils device-mapper-persistent-data lvm2
;; ;;
"${SYSTEM_OPENEULER}")
dnf install -y dnf-utils device-mapper-persistent-data lvm2
;;
esac esac
} }
@@ -218,12 +225,12 @@ function InstallationEnvironment() {
function RemoveOldVersion() { function RemoveOldVersion() {
systemctl disable --now docker >/dev/null 2>&1 systemctl disable --now docker >/dev/null 2>&1
sleep 2s sleep 2s
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
apt-get remove -y docker-ce docker-ce-cli containerd.io runc >/dev/null 2>&1 apt-get remove -y docker-ce docker-ce-cli containerd.io runc >/dev/null 2>&1
apt-get autoremove -y >/dev/null 2>&1 apt-get autoremove -y >/dev/null 2>&1
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
yum remove -y docker-ce docker-ce-cli containerd.io podman* runc >/dev/null 2>&1 yum remove -y docker-ce docker-ce-cli containerd.io podman* runc >/dev/null 2>&1
yum autoremove -y >/dev/null 2>&1 yum autoremove -y >/dev/null 2>&1
;; ;;
@@ -232,31 +239,27 @@ function RemoveOldVersion() {
## 配置 Docker CE 源 ## 配置 Docker CE 源
function ConfigureDockerCEMirror() { function ConfigureDockerCEMirror() {
if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then case "${SYSTEM_FACTIONS}" in
SOURCE_JUDGMENT=${SOURCE} "${SYSTEM_DEBIAN}")
else if [ "${SYSTEM_JUDGMENT}" = ${SYSTEM_KALI} ]; then
SOURCE_JUDGMENT="download.docker.com" curl -fsSL https://${SOURCE}/linux/debian/gpg | apt-key add - >/dev/null 2>&1
fi
case ${SYSTEM_FACTIONS} in
Debian)
if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_KALI} ]; then
curl -fsSL https://${SOURCE_JUDGMENT}/linux/debian/gpg | apt-key add - >/dev/null 2>&1
else else
curl -fsSL https://${SOURCE_JUDGMENT}/linux/${SOURCE_BRANCH}/gpg | apt-key add - >/dev/null 2>&1 curl -fsSL https://${SOURCE}/linux/${SOURCE_BRANCH}/gpg | apt-key add - >/dev/null 2>&1
fi fi
echo "deb [arch=${SOURCE_ARCH}] https://${SOURCE_JUDGMENT}/linux/${SOURCE_BRANCH} ${SYSTEM_VERSION} stable" | tee $DockerSourceList >/dev/null 2>&1 echo "deb [arch=${SOURCE_ARCH}] https://${SOURCE}/linux/${SOURCE_BRANCH} ${SYSTEM_VERSION} stable" | tee $Dir_DebianExtendSource/docker.list >/dev/null 2>&1
if [ ${SYSTEM_JUDGMENT} = ${SYSTEM_KALI} ]; then if [ "${SYSTEM_JUDGMENT}" = ${SYSTEM_KALI} ]; then
sed -i "s/${SYSTEM_VERSION}/buster/g" $DockerSourceList sed -i "s/${SYSTEM_VERSION}/buster/g" $Dir_DebianExtendSource/docker.list
sed -i "s/${SOURCE_BRANCH}/debian/g" $DockerSourceList sed -i "s/${SOURCE_BRANCH}/debian/g" $Dir_DebianExtendSource/docker.list
fi fi
apt-get update >/dev/null 2>&1 apt-get update
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
yum-config-manager -y --add-repo https://${SOURCE_JUDGMENT}/linux/${SOURCE_BRANCH}/docker-ce.repo yum-config-manager -y --add-repo https://${SOURCE}/linux/${SOURCE_BRANCH}/docker-ce.repo
yum makecache >/dev/null 2>&1 yum makecache
sed -i "s|download.docker.com|${SOURCE}|g" $Dir_RedHatRepos/docker-ce.repo
;; ;;
esac esac
[[ "${SYSTEM_FACTIONS}" == "${SYSTEM_OPENEULER}" ]] && sed -i "s|\$releasever|9|g" $Dir_RedHatRepos/docker-ce.repo
} }
## 安装 Docker Engine ## 安装 Docker Engine
@@ -264,15 +267,15 @@ function DockerEngine() {
## 导出可安装的版本列表 ## 导出可安装的版本列表
function Export_VersionList() { function Export_VersionList() {
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_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 | 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][0-9].[0-9]{1,2}" >$DockerCECLIVersionFile apt-cache madison docker-ce-cli | awk '{print $3}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$DockerCECLIVersionFile
grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
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 --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][0-9].[0-9]{1,2}" >$DockerCECLIVersionFile yum list docker-ce-cli --showduplicates | sort -r | awk '{print $2}' | grep -Eo "[0-9][0-9].[0-9]{1,2}.[0-9]{1,2}" >$DockerCECLIVersionFile
grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile grep -wf $DockerCEVersionFile $DockerCECLIVersionFile >$DockerVersionFile
;; ;;
esac esac
@@ -282,11 +285,11 @@ function DockerEngine() {
## 安装 ## 安装
function Install() { function Install() {
if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
apt-get install -y docker-ce docker-ce-cli containerd.io apt-get install -y docker-ce docker-ce-cli containerd.io
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
yum install -y docker-ce docker-ce-cli containerd.io yum install -y docker-ce docker-ce-cli containerd.io
;; ;;
esac esac
@@ -296,12 +299,12 @@ function DockerEngine() {
cat $DockerVersionFile cat $DockerVersionFile
echo -e '\n注以上可供选择的安装版本由官方源提供若系统过新可能无法安装较旧的版本' echo -e '\n注以上可供选择的安装版本由官方源提供若系统过新可能无法安装较旧的版本'
while true; do while true; do
CHOICE_F=$(echo -e "\n${BOLD}└─ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n") local CHOICE=$(echo -e "\n${BOLD}└─ 请根据上面的列表,选择并输入你想要安装的具体版本号:${PLAIN}\n")
read -p "${CHOICE_F}" DOCKER_VERSION read -p "${CHOICE}" DOCKER_VERSION
echo '' echo ''
cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1 cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1
if [ $? -eq 0 ]; then 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 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 if [ $? -eq 0 ]; then
rm -rf $DockerVersionFile rm -rf $DockerVersionFile
break break
@@ -312,14 +315,11 @@ function DockerEngine() {
echo -e "$ERROR 输入错误请重新输入!" echo -e "$ERROR 输入错误请重新输入!"
fi fi
done done
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
CheckVersion=$(echo ${DOCKER_VERSION} | cut -c1-2) CheckVersion=$(echo ${DOCKER_VERSION} | cut -c1-2)
CheckSubversion=$(echo ${DOCKER_VERSION} | cut -c4-5) CheckSubversion=$(echo ${DOCKER_VERSION} | cut -c4-5)
case ${CheckVersion} in case ${CheckVersion} in
21 | 20 | 19)
INSTALL_JUDGMENT="5:"
;;
18) 18)
if [ ${CheckSubversion} == "09" ]; then if [ ${CheckSubversion} == "09" ]; then
INSTALL_JUDGMENT="5:" INSTALL_JUDGMENT="5:"
@@ -328,12 +328,12 @@ function DockerEngine() {
fi fi
;; ;;
*) *)
INSTALL_JUDGMENT="" INSTALL_JUDGMENT="5:"
;; ;;
esac esac
apt-get install -y docker-ce=${INSTALL_JUDGMENT}${DOCKER_VERSION}* docker-ce-cli=5:${DOCKER_VERSION}* containerd.io apt-get install -y docker-ce=${INSTALL_JUDGMENT}${DOCKER_VERSION}* docker-ce-cli=5:${DOCKER_VERSION}* containerd.io
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
yum install -y docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io yum install -y docker-ce-${DOCKER_VERSION} docker-ce-cli-${DOCKER_VERSION} containerd.io
;; ;;
esac esac
@@ -345,20 +345,21 @@ function DockerEngine() {
if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then
if [ -d $DockerDir ] && [ -e $DockerConfig ]; then if [ -d $DockerDir ] && [ -e $DockerConfig ]; then
if [ -e $DockerConfigBackup ]; then if [ -e $DockerConfigBackup ]; then
CHOICE_BACKUP=$(echo -e "\n${BOLD}└─ 检测到已备份的 Docker 配置文件,是否覆盖备份? [Y/n] ${PLAIN}") local CHOICE_BACKUP=$(echo -e "\n${BOLD}└─ 检测到已备份的 Docker 配置文件,是否跳过覆盖备份? [Y/n] ${PLAIN}")
read -p "${CHOICE_BACKUP}" INPUT read -p "${CHOICE_BACKUP}" INPUT
[ -z ${INPUT} ] && INPUT=Y [ -z ${INPUT} ] && INPUT=Y
case $INPUT in case $INPUT in
[Yy] | [Yy][Ee][Ss]) [Yy] | [Yy][Ee][Ss]) ;;
cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1 [Nn] | [Nn][Oo])
echo ''
cp -rvf $DockerConfig $DockerConfigBackup 2>&1
;; ;;
[Nn] | [Nn][Oo]) ;;
*) *)
echo -e "\n$WARN 输入错误,默认不覆盖!" echo -e "\n$WARN 输入错误,默认不覆盖!"
;; ;;
esac esac
else else
cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1 cp -rvf $DockerConfig $DockerConfigBackup 2>&1
echo -e "\n$COMPLETE 已备份原有 Docker 配置文件至 $DockerConfigBackup\n" echo -e "\n$COMPLETE 已备份原有 Docker 配置文件至 $DockerConfigBackup\n"
fi fi
sleep 2s sleep 2s
@@ -373,17 +374,17 @@ function DockerEngine() {
} }
## 判定是否已安装 ## 判定是否已安装
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
dpkg -l | grep docker-ce-cli -q dpkg -l | grep docker-ce-cli -q
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
rpm -qa | grep docker-ce-cli -q rpm -qa | grep docker-ce-cli -q
;; ;;
esac esac
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
Export_VersionList 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]{1,2}.[0-9]{1,2}")
DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1) DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1)
if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then
if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
@@ -394,25 +395,24 @@ function DockerEngine() {
fi fi
echo '' echo ''
systemctl enable --now docker >/dev/null 2>&1 systemctl enable --now docker >/dev/null 2>&1
DockerCompose
ShowVersion ShowVersion
AuthorSignature AuthorSignature
exit exit
else else
CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装最新版本的 Docker Engine是否继续安装其它版本? [Y/n] ${PLAIN}") local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装最新版本的 Docker Engine是否继续安装其它版本? [Y/n] ${PLAIN}")
fi fi
else else
if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then
CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine是否覆盖安装为最新版本? [Y/n] ${PLAIN}") local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine是否覆盖安装为最新版本? [Y/n] ${PLAIN}")
else else
CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine是否继续安装其它版本? [Y/n] ${PLAIN}") local CHOICE=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine是否继续安装其它版本? [Y/n] ${PLAIN}")
fi fi
fi fi
read -p "${CHOICE_E}" INPUT read -p "${CHOICE}" INPUT
[ -z ${INPUT} ] && INPUT=Y [ -z ${INPUT} ] && INPUT=Y
case $INPUT in case $INPUT in
[Yy] | [Yy][Ee][Ss]) [Yy] | [Yy][Ee][Ss])
echo -en "\n${WORKING} 正在卸载之前的版本..." echo -en "\n$WORKING 正在卸载之前的版本..."
RemoveOldVersion RemoveOldVersion
echo -e "\n\n$COMPLETE 卸载完毕\n" echo -e "\n\n$COMPLETE 卸载完毕\n"
Install Install
@@ -432,55 +432,23 @@ function DockerEngine() {
systemctl enable --now docker >/dev/null 2>&1 systemctl enable --now docker >/dev/null 2>&1
} }
## 安装 Docker Compose
function DockerCompose() {
if [[ ${DOCKER_COMPOSE} == "True" ]]; then
[ -e $DockerCompose ] && rm -rf $DockerCompose
if [[ ${ARCH} == "x86_64" ]]; then
echo -e ''
if [ ${DOCKER_COMPOSE_DOWNLOAD_PROXY} == "True" ]; then
curl -L ${PROXY_URL}${DOCKER_COMPOSE_DOWNLOAD_URL} -o $DockerCompose
else
curl -L ${DOCKER_COMPOSE_DOWNLOAD_URL} -o $DockerCompose
fi
chmod +x $DockerCompose
else
echo -e "\n${WORKING} 由于本机非 x86 架构,开始通过 pip3 安装 Docker Compose ...\n"
if [ ${SYSTEM_FACTIONS} = ${SYSTEM_DEBIAN} ]; then
apt-get install -y python3-pip python3-dev gcc libffi-dev openssl >/dev/null 2>&1
elif [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ]; then
yum install -y python3-pip python3-devel gcc libffi-devel openssl-devel >/dev/null 2>&1
fi
pip3 install --upgrade pip
if [ ${DOCKER_COMPOSE_DOWNLOAD_PROXY} == "True" ]; then
pip3 install -i https://mirrors.aliyun.com/pypi/simple docker-compose
else
pip3 install docker-compose
fi
[ $? -ne 0 ] && echo -e "\n$ERROR Docker Compose 安装失败\n\n检测到当前处理器架构为 ${ARCH} ,无法绝对保证安装成功,自行查看 pip 报错原因"
fi
fi
echo -e ''
}
## 查看版本并验证安装结果 ## 查看版本并验证安装结果
function ShowVersion() { function ShowVersion() {
echo -e "${WORKING} 验证安装版本...\n" echo -e "\n$WORKING 验证安装版本...\n"
docker -v docker -v
VERIFICATION_DOCKER=$? VERIFICATION_DOCKER=$?
[[ ${DOCKER_COMPOSE} == "True" ]] && docker-compose -v
if [ ${VERIFICATION_DOCKER} -eq 0 ]; then if [ ${VERIFICATION_DOCKER} -eq 0 ]; then
echo -e "\n$COMPLETE 安装完成" echo -e "\n$COMPLETE 安装完成"
else else
echo -e "\n$ERROR 安装失败" echo -e "\n$ERROR 安装失败"
case ${SYSTEM_FACTIONS} in case "${SYSTEM_FACTIONS}" in
Debian) "${SYSTEM_DEBIAN}")
echo -e "\n检查源文件 cat $DockerSourceList" echo -e "\n检查源文件cat $Dir_DebianExtendSource/docker.list"
echo -e '请尝试手动执行安装命令: apt-get install -y docker-ce docker-ce-cli containerd.io\n' echo -e '请尝试手动执行安装命令: apt-get install -y docker-ce docker-ce-cli containerd.io\n'
echo '' echo ''
;; ;;
RedHat) "${SYSTEM_REDHAT}" | "${SYSTEM_OPENEULER}")
echo -e "\n检查源文件 cat $DockerRepo" echo -e "\n检查源文件cat $Dir_RedHatRepos/docker.repo"
echo -e '请尝试手动执行安装命令: yum install -y docker-ce docker-ce-cli containerd.io\n' echo -e '请尝试手动执行安装命令: yum install -y docker-ce docker-ce-cli containerd.io\n'
;; ;;
esac esac
@@ -501,91 +469,24 @@ function ShowVersion() {
} }
function ChooseMirrors() { function ChooseMirrors() {
function WelcomeTitle() {
echo -e '+------------------------------------+'
echo -e '| |'
echo -e '| 欢迎使用 Docker 一键安装脚本 |'
echo -e '| |'
echo -e '+------------------------------------+'
echo -e ''
echo -e " 运行环境 ${BLUE}${SYSTEM_PRETTY_NAME:-"${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER}"} ${SYSTEM_ARCH}${PLAIN}"
echo -e " 系统时间 ${BLUE}$(date "+%Y-%m-%d %H:%M:%S") $(timedatectl status | grep "Time zone" | awk -F ':' '{print$2}' | awk -F ' ' '{print$1}')${PLAIN}"
echo -e ''
}
clear clear
echo -e '+---------------------------------------------------+' WelcomeTitle
echo -e '| |'
echo -e '| ============================================= |'
echo -e '| |'
echo -e '| 欢迎使用 Docker 一键安装脚本 |'
echo -e '| |'
echo -e '| ============================================= |'
echo -e '| |'
echo -e '+---------------------------------------------------+'
echo -e ''
echo -e '#####################################################'
echo -e ''
echo -e ' 提供以下 Docker CE 和 Docker Hub 源可供选择:'
echo -e ''
echo -e '#####################################################'
echo -e ''
echo -e ' Docker CE'
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 ''
echo -e ' Docker Hub'
echo -e ''
echo -e ' ❖ 阿里云(北京) 1)'
echo -e ' ❖ 阿里云(杭州) 2)'
echo -e ' ❖ 阿里云(成都) 3)'
echo -e ' ❖ 阿里云(广州) 4)'
echo -e ' ❖ 阿里云(香港) 5)'
echo -e ' ❖ 腾讯云 6)'
echo -e ' ❖ 华为云 7)'
echo -e ' ❖ Azure 8)'
echo -e ' ❖ DaoCloud 9)'
echo -e ' ❖ 中科大 10)'
echo -e ' ❖ 谷歌云 11)'
echo -e ' ❖ 官方 12)'
echo -e ''
echo -e '#####################################################'
echo -e ''
echo -e " 运行环境 ${SYSTEM_NAME} ${SYSTEM_VERSION_NUMBER} ${SYSTEM_ARCH}"
echo -e " 系统时间 $(date "+%Y-%m-%d %H:%M:%S")"
echo -e ''
echo -e '#####################################################'
CHOICE_A=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]${PLAIN}")
read -p "${CHOICE_A}" 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"
;;
7)
SOURCE="mirrors.ustc.edu.cn/docker-ce"
;;
8)
SOURCE="download.docker.com"
;;
*)
SOURCE="mirrors.aliyun.com/docker-ce"
echo -e "\n$WARN 输入错误,默认使用阿里云!"
sleep 1s
;;
esac
## 是否手动选择安装版本 ## 是否手动选择安装版本
CHOICE_C=$(echo -e "\n ${BOLD}└─ 是否安装最新版本的 Docker Engine? [Y/n] ${PLAIN}") local CHOICE_A=$(echo -e "${BOLD}└─ 是否安装最新版本的 Docker Engine? [Y/n] ${PLAIN}")
read -p "${CHOICE_C}" INPUT read -p "${CHOICE_A}" INPUT
[ -z ${INPUT} ] && INPUT=Y [ -z ${INPUT} ] && INPUT=Y
case $INPUT in case $INPUT in
[Yy] | [Yy][Ee][Ss]) [Yy] | [Yy][Ee][Ss])
@@ -593,17 +494,79 @@ function ChooseMirrors() {
;; ;;
[Nn] | [Nn][Oo]) [Nn] | [Nn][Oo])
DOCKER_VERSION_INSTALL_LATEST="False" DOCKER_VERSION_INSTALL_LATEST="False"
if [ ${SOURCE} != "download.docker.com" ]; then SOURCE="download.docker.com"
echo -e "\n$WARN Docker CE 源已替换成官方源!"
fi
;; ;;
*) *)
DOCKER_VERSION_INSTALL_LATEST="True" DOCKER_VERSION_INSTALL_LATEST="True"
echo -e "\n$WARN 输入错误,默认安装最新版本!" echo -e "\n$WARN 输入错误,默认安装最新版本!"
;; ;;
esac esac
CHOICE_B=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]${PLAIN}") if [ -z $SOURCE ]; then
read -p "${CHOICE_B}" INPUT 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~8 ]${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~12 ]${PLAIN}")
read -p "${CHOICE_C}" INPUT
case $INPUT in case $INPUT in
1) 1)
REGISTRY_SOURCE="registry.cn-beijing.aliyuncs.com" REGISTRY_SOURCE="registry.cn-beijing.aliyuncs.com"
@@ -630,26 +593,22 @@ function ChooseMirrors() {
REGISTRY_SOURCE_OFFICIAL="False" REGISTRY_SOURCE_OFFICIAL="False"
;; ;;
7) 7)
REGISTRY_SOURCE="0bab0ef02500f24b0f31c00db79ffa00.mirror.swr.myhuaweicloud.com"
REGISTRY_SOURCE_OFFICIAL="False"
;;
8)
REGISTRY_SOURCE="dockerhub.azk8s.com" REGISTRY_SOURCE="dockerhub.azk8s.com"
REGISTRY_SOURCE_OFFICIAL="False" REGISTRY_SOURCE_OFFICIAL="False"
;; ;;
9) 8)
REGISTRY_SOURCE="f1361db2.m.daocloud.io" REGISTRY_SOURCE="f1361db2.m.daocloud.io"
REGISTRY_SOURCE_OFFICIAL="False" REGISTRY_SOURCE_OFFICIAL="False"
;; ;;
10) 9)
REGISTRY_SOURCE="docker.mirrors.ustc.edu.cn" REGISTRY_SOURCE="docker.mirrors.ustc.edu.cn"
REGISTRY_SOURCE_OFFICIAL="False" REGISTRY_SOURCE_OFFICIAL="False"
;; ;;
11) 10)
REGISTRY_SOURCE="gcr.io" REGISTRY_SOURCE="gcr.io"
REGISTRY_SOURCE_OFFICIAL="False" REGISTRY_SOURCE_OFFICIAL="False"
;; ;;
12) 11)
REGISTRY_SOURCE="registry.docker-cn.com" REGISTRY_SOURCE="registry.docker-cn.com"
REGISTRY_SOURCE_OFFICIAL="True" REGISTRY_SOURCE_OFFICIAL="True"
;; ;;
@@ -660,43 +619,21 @@ function ChooseMirrors() {
sleep 1s sleep 1s
;; ;;
esac esac
if [ -x $DockerCompose ]; then
CHOICE_D=$(echo -e "\n${BOLD}└─ 检测到已安装 Docker Compose ,是否覆盖安装? [Y/n] ${PLAIN}")
else
CHOICE_D=$(echo -e "\n${BOLD}└─ 是否安装 Docker Compose? [Y/n] ${PLAIN}")
fi
read -p "${CHOICE_D}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy] | [Yy][Ee][Ss])
DOCKER_COMPOSE="True"
CHOICE_D1=$(echo -e "\n ${BOLD}└─ 是否使用国内代理进行下载? [Y/n] ${PLAIN}")
read -p "${CHOICE_D1}" INPUT
[ -z ${INPUT} ] && INPUT=Y
case $INPUT in
[Yy] | [Yy][Ee][Ss])
DOCKER_COMPOSE_DOWNLOAD_PROXY="True"
;;
[Nn] | [Nn][Oo])
DOCKER_COMPOSE_DOWNLOAD_PROXY="False"
;;
*)
DOCKER_COMPOSE_DOWNLOAD_PROXY="False"
echo -e "\n$WARN 输入错误,默认不使用!\n"
;;
esac
;;
[Nn] | [Nn][Oo])
DOCKER_COMPOSE="False"
;;
*)
DOCKER_COMPOSE="False"
echo -e "\n$WARN 输入错误,默认不安装!\n"
;;
esac
echo -e '' echo -e ''
[ ${SYSTEM_FACTIONS} == ${SYSTEM_REDHAT} ] && CloseFirewall CloseFirewall
}
## 组合函数
function Combin_Function() {
PermissionJudgment
EnvJudgment
ChooseMirrors
InstallationEnvironment
ConfigureDockerCEMirror
DockerEngine
ShowVersion
AuthorSignature
} }
Combin_Function Combin_Function

View File

@@ -164,7 +164,7 @@
`Docker Hub` Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器 `Docker Hub` Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器
> __注意__ > __注意__
> 脚本集成安装 `Docker Engine` 与 `Docker Compose`,可手动选择安装版本和下载源,还可手动选择镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用。 > 脚本集成安装 `Docker Engine`,可手动选择安装版本和下载源,还可手动选择镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用。
*** ***

View File

@@ -161,7 +161,7 @@ bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirro
> `Docker CE` Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。 > `Docker CE` Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。
> `Docker Hub` Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器。 > `Docker Hub` Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器。
脚本集成安装 `Docker Engine` 与 `Docker Compose`,可手动选择安装版本、下载源、镜像加速器,支持国内外服务器环境和 `ARM` 架构处理器环境使用 脚本集成安装 `Docker Engine`,可手动选择安装版本、下载源、镜像加速器,支持国内外服务器环境和 `ARM` 架构处理器环境使用
*** ***