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。"
相关推荐
丰锋ff3 小时前
压缩命令笔记
linux
GeW4 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
by209994 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
cq林志炫5 小时前
两个Linux服务器之间同步文件
linux·运维·服务器
无人生还别怕6 小时前
如何搭建k8s服务(containerd部署)
linux·云原生·容器·kubernetes·openanolisos
杨浦老苏7 小时前
把项目管理搬回自己服务器:Windshift部署与避坑
docker·项目管理·群晖
企鹅侠客7 小时前
Linux CPU 负载平均值(Load Average)详解:从原理到实践
linux·运维·服务器·服务器负载
易点云徐源7 小时前
HP 暗影精灵 PRO 16 安装双系统后,开机直接进入 Windows,按 F9 才能进入 Ubuntu:GRUB 菜单不显示的处理方法
linux·运维·ubuntu
木雷坞7 小时前
Baserow Docker部署:导入设备借用CSV,再用表单新增登记
运维·docker·容器
第404号工位7 小时前
离职退电脑前别只点“清空回收站”!手把手教你彻底抹除凭证与数字痕迹
linux·python·架构