fix: support ubuntu
This commit is contained in:
+53
-21
@@ -2,59 +2,91 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
#################################################################
|
detect_distro() {
|
||||||
# 国内安装(使用阿里云镜像)
|
if [ ! -f /etc/os-release ]; then
|
||||||
install_docker_cn() {
|
echo "[ERROR] 未检测到 /etc/os-release,无法识别系统"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
. /etc/os-release
|
||||||
|
|
||||||
|
case "${ID:-}" in
|
||||||
|
debian | ubuntu)
|
||||||
|
DISTRO="${ID}"
|
||||||
|
CODENAME="${UBUNTU_CODENAME:-${VERSION_CODENAME:-$(lsb_release -cs 2>/dev/null)}}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "[ERROR] 不支持的操作系统: ${ID:-未知},仅支持 Debian 和 Ubuntu"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "$CODENAME" ]; then
|
||||||
|
echo "[ERROR] 无法确定系统代号"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_conflicting_packages() {
|
||||||
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
|
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
|
||||||
sudo apt-get remove -y $pkg 2>/dev/null || true
|
sudo apt-get remove -y $pkg 2>/dev/null || true
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
install_prerequisites() {
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y ca-certificates curl gnupg
|
sudo apt-get install -y ca-certificates curl gnupg lsb-release
|
||||||
|
}
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
# 国内安装(使用清华镜像)
|
||||||
|
install_docker_cn() {
|
||||||
|
local repo_base="https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/${DISTRO}"
|
||||||
|
local keyring="/usr/share/keyrings/docker-archive-keyring.gpg"
|
||||||
|
|
||||||
sudo install -m 0755 -d /etc/apt/keyrings
|
sudo install -m 0755 -d /etc/apt/keyrings
|
||||||
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
curl -fsSL "${repo_base}/gpg" | sudo gpg --dearmor -o "${keyring}"
|
||||||
|
|
||||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=${keyring}] ${repo_base} \
|
||||||
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
|
${CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
|
||||||
|
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||||
|
|
||||||
sudo usermod -aG docker $USER
|
sudo usermod -aG docker "$USER"
|
||||||
}
|
}
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
# 国外安装(使用官方源)
|
# 国外安装(使用官方源)
|
||||||
install_docker_intl() {
|
install_docker_intl() {
|
||||||
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
|
local repo_base="https://download.docker.com/linux/${DISTRO}"
|
||||||
sudo apt-get remove -y $pkg 2>/dev/null || true
|
local keyring="/etc/apt/keyrings/docker.asc"
|
||||||
done
|
|
||||||
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y ca-certificates curl gnupg
|
|
||||||
|
|
||||||
sudo install -m 0755 -d /etc/apt/keyrings
|
sudo install -m 0755 -d /etc/apt/keyrings
|
||||||
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
|
sudo curl -fsSL "${repo_base}/gpg" -o "${keyring}"
|
||||||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
sudo chmod a+r "${keyring}"
|
||||||
|
|
||||||
echo \
|
echo \
|
||||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
|
"deb [arch=$(dpkg --print-architecture) signed-by=${keyring}] ${repo_base} \
|
||||||
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" |
|
${CODENAME} stable" |
|
||||||
sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
|
sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
|
||||||
|
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||||
|
|
||||||
sudo usermod -aG docker $USER
|
sudo usermod -aG docker "$USER"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detect_distro
|
||||||
|
remove_conflicting_packages
|
||||||
|
install_prerequisites
|
||||||
|
|
||||||
# 根据环境变量选择安装方式(须在函数定义之后调用)
|
# 根据环境变量选择安装方式(须在函数定义之后调用)
|
||||||
if [ "$CN_REGION" = "1" ]; then
|
if [ "$CN_REGION" = "1" ]; then
|
||||||
echo "[INFO] 国内环境,使用阿里云镜像安装 Docker"
|
echo "[INFO] 国内环境,使用清华镜像安装 Docker (${DISTRO}/${CODENAME})"
|
||||||
install_docker_cn
|
install_docker_cn
|
||||||
else
|
else
|
||||||
echo "[INFO] 国外环境,使用官方源安装 Docker"
|
echo "[INFO] 国外环境,使用官方源安装 Docker (${DISTRO}/${CODENAME})"
|
||||||
install_docker_intl
|
install_docker_intl
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user