137 lines
3.3 KiB
Bash
137 lines
3.3 KiB
Bash
#!/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 |