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