Skip to content

Instantly share code, notes, and snippets.

@D3-3109
Created March 2, 2024 01:12
Show Gist options
  • Save D3-3109/62f281bb89e2b463385f3ac78be76f42 to your computer and use it in GitHub Desktop.
Save D3-3109/62f281bb89e2b463385f3ac78be76f42 to your computer and use it in GitHub Desktop.
Docker install script
#!/bin/bash
# Docker 安装脚本
set -e
function select_mirror() {
echo "请选择你想要使用的Docker镜像源:"
echo "1) 阿里云"
echo "2) 阿里云内网"
echo "3) 腾讯云"
echo "4) 腾讯云内网"
echo "5) Docker 官方(AWS)"
read -r mirror
case "$mirror" in
1)
DOCKER_MIRROR='https://mirrors.aliyun.com/docker-ce/linux'
;;
2)
DOCKER_MIRROR='http://mirrors.cloud.aliyuncs.com/docker-ce/linux'
;;
3)
DOCKER_MIRROR='https://mirrors.cloud.tencent.com/docker-ce/linux'
;;
4)
DOCKER_MIRROR='http://mirrors.tencentyun.com/docker-ce/linux'
;;
5)
DOCKER_MIRROR='https://download.docker.com/linux'
;;
*)
echo "输入错误,请重新运行脚本!"
exit 1
;;
esac
}
function install_docker() {
case "$(uname -m)" in
x86_64)
ARCH='amd64'
;;
aarch64)
ARCH='arm64'
;;
armv7l)
ARCH='armhf'
;;
*)
echo "暂时不支持你的系统架构!"
exit 1
;;
esac
case "$(sed -n -e '/^ID=/{s/ID=//; s/"//g; p;}' /etc/os-release)" in
ubuntu)
sudo apt remove docker docker-engine docker.io containerd runc || true
sudo apt update
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL "${DOCKER_MIRROR}/ubuntu/gpg" | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$ARCH signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] ${DOCKER_MIRROR}/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
;;
debian)
sudo apt remove docker docker-engine docker.io containerd runc || true
sudo apt update
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL "${DOCKER_MIRROR}/debian/gpg" | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$ARCH signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] ${DOCKER_MIRROR}/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
;;
fedora)
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo "${DOCKER_MIRROR}/fedora/docker-ce.repo"
sudo dnf makecache
sudo dnf install -y docker-ce docker-ce-cli containerd.io
;;
centos|anolis|rocky|almalinux|alinux)
sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo "${DOCKER_MIRROR}/centos/docker-ce.repo"
sudo yum makecache
sudo yum install -y docker-ce
;;
raspbian)
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL "${DOCKER_MIRROR}/raspbian/gpg" | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$ARCH signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] ${DOCKER_MIRROR}/raspbian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
;;
rhel)
sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo "${DOCKER_MIRROR}/rhel/docker-ce.repo"
sudo yum makecache
sudo yum install -y docker-ce
;;
sles)
sudo zypper remove docker docker-common docker-selinux docker-engine
sudo zypper install -y yum-utils device-mapper-persistent-data lvm2
sudo zypper addrepo "${DOCKER_MIRROR}/sles/docker.repo"
sudo zypper install -y docker
;;
*)
echo "暂时不支持你的操作系统!"
exit 1
;;
esac
sudo systemctl enable --now docker
sudo docker run hello-world
}
select_mirror
install_docker
echo "安装完成,使用docker命令来管理容器和镜像"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment