ubuntu-一键安装docker-compose.md 5.9 KB

title: ubuntu 一键安装docker+compose author: Gamehu date: 2025-05-23 14:51:21 tags:

  • devops categories:
  • 工作 ---
    AI提效 Claude Sonnet 4
    此系列都是基于AI辅助实现

国外的

# 能访问国外的一件搞定,比如我的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"