← 返回

安装 Docker

用官方脚本装 Docker 与 Compose,并写入国内镜像加速。已经装过会先问一句,不会直接覆盖。

需要 root

一键执行

curl -fsSL https://www.moiu.cn/scripts/docker-install.sh | bash

脚本源码

#!/usr/bin/env bash
# Docker 一键安装
#
# 需要 root。用官方脚本装 Docker 与 Compose,并写入国内镜像加速。
# 重复执行会问一句要不要重装 —— 问句从 /dev/tty 读,这样在
# curl | bash 的用法下不会把脚本自身的后续内容当成答案吃掉。

set -e

# 需要 root:下面的系统级改动都直接执行,不再逐条 sudo
if [ "$(id -u)" -ne 0 ]; then
    echo '[!] 这个脚本需要 root 权限,请用 sudo 重新运行:'
    echo '    curl -fsSL 脚本地址 | sudo bash'
    echo '    或已经下载到本地:sudo bash 本文件'
    exit 1
fi


echo '====== 开始安装 Docker ======'

if command -v docker >/dev/null 2>&1; then
    echo "[!] 已安装:$(docker --version)"
    answer=N
    if [ -r /dev/tty ]; then
        read -rp '是否重新安装?(y/N): ' answer < /dev/tty || answer=N
    fi
    case "$answer" in
        y|Y) ;;
        *) echo '[*] 已跳过'; exit 0 ;;
    esac
fi

echo '[*] 下载并执行官方安装脚本...'
curl -fsSL https://get.docker.com | bash

echo '[*] 启动并设为开机自启...'
systemctl enable --now docker

if ! docker compose version >/dev/null 2>&1; then
    echo '[*] 补充安装 docker-compose-plugin...'
    apt-get update -qq
    apt-get install -y docker-compose-plugin
fi

echo '[*] 写入镜像加速...'
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'JSON'
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]
}
JSON

systemctl daemon-reload
systemctl restart docker

echo ''
echo '====== 安装完成 ======'
docker --version
docker compose version

下载原始文件