title: ubuntu 一键安装docker+compose author: Gamehu date: 2025-05-23 14:51:21 tags:
# 能访问国外的一件搞定,比如我的Bandwagon
curl -fsSL https://get.docker.com | sudo bash
#!/bin/bash
# Docker和Docker Compose完整安装脚本 for Ubuntu
# 支持Ubuntu 20.04/22.04/24.04及更新版本
set -e # 遇到错误时退出
echo "================================"
echo "Docker和Docker Compose安装脚本"
echo "================================"
# 检查是否为root用户
if [ "$EUID" -eq 0 ]; then
echo "请不要使用root用户运行此脚本"
echo "请使用普通用户运行:./install_docker.sh"
exit 1
fi
# 检查系统版本
if ! command -v lsb_release &> /dev/null; then
sudo apt update
sudo apt install -y lsb-release
fi
UBUNTU_VERSION=$(lsb_release -rs)
echo "检测到Ubuntu版本: $UBUNTU_VERSION"
# 备份原有的sources.list
echo "1. 备份并配置APT镜像源..."
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%Y%m%d_%H%M%S)
# 配置阿里云APT镜像源
sudo tee /etc/apt/sources.list > /dev/null <<EOF
# 阿里云镜像源
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -cs) main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ $(lsb_release -cs)-security main restricted universe multiverse
EOF
# 更新系统
echo "2. 更新系统包..."
sudo apt update
# 安装必要依赖
echo "3. 安装必要依赖..."
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common \
gnupg \
lsb-release
# 添加Docker官方GPG密钥(使用阿里云镜像)
echo "4. 添加Docker GPG密钥..."
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加Docker仓库(使用阿里云镜像)
echo "5. 添加Docker仓库..."
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新包索引
echo "6. 更新包索引..."
sudo apt update
# 安装Docker
echo "7. 安装Docker..."
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 启动Docker服务并设置开机自启
echo "8. 启动Docker服务..."
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户添加到docker组
echo "9. 配置用户权限..."
sudo usermod -aG docker $USER
# 配置Docker国内镜像加速器
echo "10. 配置Docker镜像加速器..."
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://dockerhub.icu",
"https://docker.chenby.cn",
"https://dockerproxy.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 重启Docker服务以应用配置
echo "11. 重启Docker服务..."
sudo systemctl daemon-reload
sudo systemctl restart docker
# 安装Docker Compose
echo "12. 安装Docker Compose..."
# 检查Ubuntu版本,选择合适的安装方法
if [[ $(echo "$UBUNTU_VERSION >= 22.04" | bc -l) -eq 1 ]] 2>/dev/null || [[ "$UBUNTU_VERSION" == "22.04" ]] || [[ "$UBUNTU_VERSION" > "22.04" ]]; then
# Ubuntu 22.04及以上版本,使用官方插件
echo " 使用官方插件安装Docker Compose..."
sudo apt install -y docker-compose-plugin
COMPOSE_CMD="docker compose"
else
# Ubuntu 20.04及以下版本,使用二进制文件安装
echo " 使用二进制文件安装Docker Compose..."
COMPOSE_VERSION="v2.24.1"
sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
COMPOSE_CMD="docker-compose"
fi
# 等待Docker服务完全启动
echo "13. 等待Docker服务启动..."
sleep 3
# 测试安装
echo "14. 测试安装..."
echo "Docker版本:"
docker --version
echo "Docker Compose版本:"
if [[ "$COMPOSE_CMD" == "docker compose" ]]; then
docker compose version
else
docker-compose --version
fi
echo "Docker服务状态:"
sudo systemctl is-active docker
echo ""
echo "================================"
echo "安装完成!"
echo "================================"
echo ""
echo "重要提示:"
echo "1. 请重新登录系统或运行 'newgrp docker' 来使用户组权限生效"
echo "2. 然后运行 'docker run hello-world' 来测试安装"
echo ""
if [[ "$COMPOSE_CMD" == "docker compose" ]]; then
echo "Docker Compose命令: docker compose (注意是空格)"
echo "如果习惯使用 docker-compose,可以创建别名:"
echo "echo 'alias docker-compose=\"docker compose\"' >> ~/.bashrc && source ~/.bashrc"
else
echo "Docker Compose命令: docker-compose"
fi
echo ""
echo "常用命令:"
echo " docker --version # 查看Docker版本"
echo " $COMPOSE_CMD version # 查看Docker Compose版本"
echo " docker images # 查看镜像列表"
echo " docker ps # 查看运行中的容器"
echo " docker run hello-world # 测试Docker安装"
echo ""
echo "镜像加速器已配置,拉取镜像速度会更快!"
echo ""
echo "如需卸载Docker,请运行:"
echo "sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin"
echo "sudo rm -rf /var/lib/docker /etc/docker"