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。"
相关推荐
笨笨饿15 小时前
#79_NOP()嵌入式C语言中内联汇编宏的抽象封装模式研究
linux·c语言·网络·驱动开发·算法·硬件工程·个人开发
fish_xk15 小时前
Linux的权限
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志17 小时前
Linux 驱动与应用开发核心自测题库(面试官问答完整版)
linux·运维·php
薛定谔的悦18 小时前
储能充放电状态机执行逻辑详解
linux·数据库·能源·储能·bms
嵌入式×边缘AI:打怪升级日志19 小时前
Tina SDK Linux Kernel 基本使用(实战篇:为7寸RGB LCD触摸屏添加驱动支持).md
linux·运维·服务器
前端之虎陈随易19 小时前
为什么今天还会有新语言?MoonBit 想解决什么问题?
大数据·linux·javascript·人工智能·算法·microsoft·typescript
G.晴天19 小时前
Linux常用命令练习流程
java·linux·运维·服务器·tomcat
嵌入式×边缘AI:打怪升级日志20 小时前
Linux 驱动开发核心自测题库(面试官问答版)
linux·运维·驱动开发
想唱rap20 小时前
传输层协议之UDP
java·linux·网络·c++·网络协议·mysql·udp
网安薯条20 小时前
Kali Linux 虚拟机安装与基础配置保姆级图文教程
linux·运维·网络·安全·web安全·网络安全