Ubuntu一键安装Docker和Docker Compose

一键安装docker脚本(复制整段执行)

bash 复制代码
#!/bin/bash
set -e  # 遇到错误立即停止,避免带着问题继续执行

# ---------- 1. 环境检查 ----------
if ! grep -qi "ubuntu" /etc/os-release; then
    echo "⚠️ 警告:当前系统非标准 Ubuntu,源配置可能失败。"
    read -p "是否继续?(y/N): " confirm
    [[ "$confirm" != "y" ]] && exit 0
fi

# ---------- 2. 彻底清理旧环境 ----------
echo ">>> 正在清理旧版 Docker..."
sudo apt remove -y docker.io containerd runc 2>/dev/null || true
sudo apt purge -y docker* containerd* 2>/dev/null || true
sudo apt autoremove -y
sudo rm -rf /var/lib/docker /var/lib/containerd /etc/docker /etc/apt/sources.list.d/docker.list

# ---------- 3. 安装 Docker CE ----------
echo ">>> 安装依赖与密钥..."
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings

# 下载密钥(带重试机制,防止网络抖动)
curl -fsSL --retry 3 https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 智能获取代号:非 Ubuntu 系统回退到 focal(Ubuntu 20.04 LTS)
UBUNTU_CODENAME=$(lsb_release -cs 2>/dev/null || echo "focal")
if ! curl -s --head "https://download.docker.com/linux/ubuntu/dists/$UBUNTU_CODENAME/" | head -n 1 | grep -q "200"; then
    echo "⚠️ 代号 $UBUNTU_CODENAME 无效,使用 focal 替代"
    UBUNTU_CODENAME="focal"
fi

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $UBUNTU_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null

# 安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# ---------- 4. 优化配置 ----------
echo ">>> 配置镜像加速与日志限制..."
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF

# 重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker

# ---------- 5. 验证与建议 ----------
echo ">>> 安装完成,版本信息:"
docker --version
docker compose version 2>/dev/null || echo "Compose Plugin 已安装"

echo "✅ Docker 安装成功!"
echo "建议:执行 'sudo usermod -aG docker $USER' 将当前用户加入 docker 组,避免每次使用 sudo。"

一键安装Docker Compose脚本(复制整段执行)

bash 复制代码
#!/bin/bash
set -e

# 1. 下载最新版 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 2. 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 3. 创建软链接(让系统能识别 docker-compose 命令)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 4. 验证安装
echo -e "\n===== Docker Compose 安装成功 ====="
docker-compose --version

以上两个直接一 起一步到位

复制代码
#!/bin/bash
set -e

# ---------- 1. 清理旧环境 ----------
echo ">>> 清理旧版本..."
sudo apt remove -y docker.io containerd runc 2>/dev/null || true
sudo apt purge -y docker* containerd* 2>/dev/null || true
sudo apt autoremove -y
sudo rm -rf /var/lib/docker /var/lib/containerd /etc/docker /etc/apt/sources.list.d/docker.list
sudo rm -f /usr/bin/docker-compose /usr/local/bin/docker-compose

# ---------- 2. 安装 Docker CE ----------
echo ">>> 安装 Docker CE..."
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL --retry 3 https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

UBUNTU_CODENAME=$(lsb_release -cs 2>/dev/null || echo "focal")
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $UBUNTU_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# ---------- 3. 配置镜像加速 ----------
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

# ---------- 4. 安装独立版 docker-compose(可选)----------
echo ">>> 安装 docker-compose 独立版..."
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
sudo curl -L --retry 3 "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
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose

# ---------- 5. 验证 ----------
echo -e "\n===== 安装完成 ====="
docker --version
docker compose version
docker-compose --version

echo -e "\n✅ 全部安装成功!"
echo "提示:执行 'sudo usermod -aG docker $USER' 并重新登录,即可免 sudo 使用 docker。"
相关推荐
dddddppppp1232 小时前
arm32段+页映射 手撕mmu的行为之软件模拟
linux·服务器·网络
天赐学c语言2 小时前
MySQL - 数据库基础
linux·数据库·mysql
一只小bit2 小时前
Docker 实战系列:接入生产场景,快速拉起服务
运维·docker·容器
wwj888wwj2 小时前
Ansible基础(复习3)
linux·运维·服务器·git·ansible
senijusene2 小时前
IMX6ULL Linux 驱动开发:GPIO 子系统 + misc 框架实现按键输入驱动开发
linux·运维·驱动开发
Ww.xh2 小时前
Windows+Ubuntu混合开发OpenHarmony指南
windows·ubuntu·harmonyos
捞的不谈~2 小时前
解决在Ubuntu系统下使用运行Lucid 相机(HTR003S-001)相应实例出现的依赖库缺失的问题
linux·运维·ubuntu
J超会运2 小时前
OpenEuler24.03 LVS+Keepalived实战指南
linux·服务器·前端
鳄鱼杆2 小时前
服务器 | 2026年Ubuntu 24.04下GitLab Docker 企业级部署
服务器·ubuntu·gitlab