137 lines
3.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 设置错误时立即退出
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 安装Docker Engine
install_docker_engine() {
log_info "安装Docker Engine..."
# 卸载旧版本
apt-get remove -y docker docker-engine docker.io containerd runc || true
# 安装依赖
apt-get update
apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定版仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker Engine
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
# 启动Docker服务
systemctl start docker
systemctl enable docker
# 检查Docker状态
if ! systemctl is-active --quiet docker; then
log_error "Docker服务启动失败"
exit 1
fi
log_info "Docker Engine安装完成"
}
# 安装Docker Compose
install_docker_compose() {
log_info "安装Docker Compose..."
# 下载Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加执行权限
chmod +x /usr/local/bin/docker-compose
# 创建命令补全
curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
log_info "Docker Compose安装完成"
}
# 配置Docker
configure_docker() {
log_info "配置Docker..."
# 创建docker用户组
groupadd docker || true
# 将当前用户添加到docker组
usermod -aG docker $USER
# 配置Docker守护进程
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2",
"data-root": "/var/lib/docker",
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
# 重启Docker服务
systemctl daemon-reload
systemctl restart docker
log_info "Docker配置完成"
}
# 主函数
main() {
log_info "开始安装Docker..."
# 安装Docker Engine
install_docker_engine
# 安装Docker Compose
install_docker_compose
# 配置Docker
configure_docker
log_info "Docker安装完成"
log_info "请重新登录以使docker组权限生效。"
log_info "Windows端请手动安装Docker Desktop: https://www.docker.com/products/docker-desktop"
}
# 执行主函数
main