title: ubuntu 一键安装docker+compose
author: Gamehu
date: 2025-05-23 14:51:21
tags:
- devops
categories:
- 工作
---
AI提效
Claude Sonnet 4
此系列都是基于AI辅助实现
## 国外的
```shell
# 能访问国外的一件搞定,比如我的Bandwagon
curl -fsSL https://get.docker.com | sudo bash
```
## 国内的
```shell
#!/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 < /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 <= 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"
```