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。"
相关推荐
lsh曙光1 小时前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫1 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
似的8352 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
我不管我就要叫小猪3 小时前
嵌入式Linux----网络通信
linux·运维·服务器
江湖有缘4 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
泡沫冰@4 小时前
ECS 的介绍和使用
linux·服务器·网络
姜太小白4 小时前
【Linux】df -h 卡住问题的通用排查与解决方案总结
linux·运维·php
fengyehongWorld5 小时前
Linux 终端快捷键
linux·运维
哎呦喂我去去去5 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
easy_coder7 小时前
Linux LVM 知识文档
linux·运维