Create dock.sh
This commit is contained in:
135
dock.sh
Normal file
135
dock.sh
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 确保脚本以root权限运行
|
||||||
|
check_root() {
|
||||||
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
|
echo "请使用root权限运行此脚本" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 安装Docker
|
||||||
|
install_docker() {
|
||||||
|
echo "===== 开始安装Docker ====="
|
||||||
|
|
||||||
|
# 更新系统并安装必要的依赖包
|
||||||
|
echo "更新系统并安装依赖包..."
|
||||||
|
apt update && apt install -y ca-certificates curl gnupg lsb-release
|
||||||
|
|
||||||
|
# 创建Docker密钥存储目录
|
||||||
|
echo "准备Docker密钥..."
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
|
||||||
|
# 下载并安装Docker GPG密钥
|
||||||
|
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||||
|
|
||||||
|
# 添加Docker软件源(使用阿里云镜像)
|
||||||
|
echo "配置Docker软件源..."
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
|
||||||
|
# 安装Docker引擎
|
||||||
|
echo "安装Docker引擎..."
|
||||||
|
apt update
|
||||||
|
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
|
||||||
|
# 配置Docker镜像加速器
|
||||||
|
echo "配置Docker镜像加速器..."
|
||||||
|
mkdir -p /etc/docker
|
||||||
|
tee /etc/docker/daemon.json <<-'EOF'
|
||||||
|
{
|
||||||
|
"registry-mirrors": [
|
||||||
|
"https://docker.m.daocloud.io"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 重启Docker服务使配置生效
|
||||||
|
echo "重启Docker服务..."
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl restart docker
|
||||||
|
systemctl enable docker # 设置开机自启
|
||||||
|
|
||||||
|
# 验证安装结果
|
||||||
|
if docker --version >/dev/null 2>&1; then
|
||||||
|
echo "===== Docker安装配置完成! ====="
|
||||||
|
docker --version
|
||||||
|
else
|
||||||
|
echo "===== Docker安装失败,请检查错误信息。 =====" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 卸载Docker
|
||||||
|
uninstall_docker() {
|
||||||
|
echo "===== 开始卸载Docker ====="
|
||||||
|
|
||||||
|
# 检查Docker是否安装
|
||||||
|
if ! command -v docker &> /dev/null; then
|
||||||
|
echo "Docker未安装,无需卸载"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 停止Docker服务
|
||||||
|
echo "停止Docker服务..."
|
||||||
|
systemctl stop docker
|
||||||
|
systemctl disable docker
|
||||||
|
|
||||||
|
# 卸载Docker包
|
||||||
|
echo "卸载Docker组件..."
|
||||||
|
apt purge -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||||
|
|
||||||
|
# 删除Docker相关目录
|
||||||
|
echo "清理Docker配置和数据目录..."
|
||||||
|
rm -rf /etc/docker
|
||||||
|
rm -rf /etc/apt/keyrings/docker.gpg
|
||||||
|
rm -rf /etc/apt/sources.list.d/docker.list
|
||||||
|
rm -rf /var/lib/docker
|
||||||
|
rm -rf /var/lib/containerd
|
||||||
|
|
||||||
|
# 清理无用依赖
|
||||||
|
echo "清理系统残留包..."
|
||||||
|
apt autoremove -y
|
||||||
|
apt autoclean
|
||||||
|
|
||||||
|
# 验证卸载结果
|
||||||
|
if ! command -v docker &> /dev/null; then
|
||||||
|
echo "===== Docker卸载完成! ====="
|
||||||
|
echo "注意:Docker容器和镜像数据已删除"
|
||||||
|
else
|
||||||
|
echo "===== Docker卸载失败,请检查错误信息。 =====" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "Docker安装与卸载管理脚本"
|
||||||
|
echo "用法: $0 [选项]"
|
||||||
|
echo "选项:"
|
||||||
|
echo " -i 安装Docker(默认选项)"
|
||||||
|
echo " -u 卸载Docker"
|
||||||
|
echo " -h 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主程序
|
||||||
|
check_root
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
-install)
|
||||||
|
install_docker
|
||||||
|
;;
|
||||||
|
-u)
|
||||||
|
uninstall_docker
|
||||||
|
;;
|
||||||
|
-h)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
"")
|
||||||
|
install_docker
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "未知选项: $1" >&2
|
||||||
|
show_help >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user