Files
workspace/notes/后端开发/docker/docker.md
T
2025-10-20 22:07:03 +08:00

7.4 KiB
Raw Blame History

docker 和 docker compose安装

脚本命令

# 1.创建脚本
vim docker-script.sh

# 2.输入内容 i 进行编辑模式, :wq 保存

# 3.赋予权限
chmod +x docker-script.sh

# 4.运行脚本
./docker-script.sh

对于基于Debian的系统(如Ubuntu、Debian)

#!/bin/bash

# -------------------------
# 1️⃣ 卸载旧版本 Docker
# -------------------------
sudo apt-get remove -y \
    docker \
    docker-engine \
    docker.io \
    containerd \
    runc \
    docker-ce \
    docker-ce-cli \
    containerd.io \
    docker-compose-plugin

# 可选:清理残留数据(慎用,会删除容器和镜像)
# sudo rm -rf /var/lib/docker /var/lib/containerd

echo "旧版本 Docker 已卸载(如果存在)"

# -------------------------
# 2️⃣ 更新软件包列表并安装必要依赖
# -------------------------
sudo apt-get update
sudo apt-get install -y ca-certificates curl software-properties-common lsb-release

# -------------------------
# 3️⃣ 创建密钥存储目录
# -------------------------
sudo install -m 0755 -d /etc/apt/keyrings

# -------------------------
# 4️⃣ 下载Docker官方GPG密钥
# -------------------------
sudo curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# -------------------------
# 5️⃣ 添加 Docker 仓库
# -------------------------
if [ "$(lsb_release -is)" = "Ubuntu" ]; then
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
elif [ "$(lsb_release -is)" = "Debian" ]; then
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
fi

sudo apt-get update
echo "Docker 仓库已添加。"

# -------------------------
# 6️⃣ 安装 Docker 及相关组件
# -------------------------
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

echo "Docker 安装完成 ✅"

对于基于RHEL的系统(如CentOS、RHEL)

#!/bin/bash

# -------------------------
# 1️⃣ 卸载旧版本 Docker
# -------------------------
sudo yum remove -y docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine \
                  docker-ce \
                  docker-ce-cli \
                  containerd.io \
                  docker-compose-plugin

echo "旧版本 Docker 已卸载(如果存在)"

# -------------------------
# 2️⃣ 安装 yum 配置管理工具
# -------------------------
sudo yum install -y yum-utils

# -------------------------
# 3️⃣ 检测系统发行版并添加 Docker 仓库
# -------------------------
if [ -f /etc/centos-release ]; then
    # CentOS 系统
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
elif [ -f /etc/redhat-release ]; then
    # RHEL 系统
    # 注意:RHEL 用户需要启用订阅管理仓库
    sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
else
    echo "未识别的发行版,脚本退出。"
    exit 1
fi

# -------------------------
# 4️⃣ 更新 yum 缓存
# -------------------------
sudo yum makecache fast
echo "Docker 仓库已添加。"

# -------------------------
# 5️⃣ 安装 Docker 及相关组件
# -------------------------
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

echo "Docker 安装完成 ✅"

通用脚本

#!/bin/bash

set -e

# -------------------------
# 1️⃣ 卸载旧版本 Docker
# -------------------------
remove_old_docker() {
    if command -v apt-get >/dev/null 2>&1; then
        sudo apt-get remove -y docker docker-engine docker.io containerd runc docker-ce docker-ce-cli containerd.io docker-compose-plugin || true
    elif command -v yum >/dev/null 2>&1; then
        sudo yum remove -y docker \
                           docker-client \
                           docker-client-latest \
                           docker-common \
                           docker-latest \
                           docker-latest-logrotate \
                           docker-logrotate \
                           docker-engine \
                           docker-ce \
                           docker-ce-cli \
                           containerd.io \
                           docker-compose-plugin || true
    fi
    echo "旧版本 Docker 已卸载(如果存在)"
}

# -------------------------
# 2️⃣ 安装 Docker(DEB 系统)
# -------------------------
install_docker_deb() {
    local distro=$1
    local codename=$2
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common lsb-release
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL "https://download.docker.com/linux/$distro/gpg" -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/$distro $codename stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    sudo systemctl enable --now docker
}

# -------------------------
# 3️⃣ 安装 Docker(RPM 系统)
# -------------------------
install_docker_rpm() {
    local distro=$1
    if [ "$distro" = "fedora" ]; then
        sudo dnf -y install dnf-plugins-core
    else
        sudo yum install -y yum-utils
    fi
    sudo yum-config-manager --add-repo "https://download.docker.com/linux/$distro/docker-ce.repo"
    sudo yum makecache fast
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    sudo systemctl enable --now docker
}

# -------------------------
# 4️⃣ 主流程
# -------------------------
remove_old_docker

# 检测 Linux 发行版
if [ -f /etc/os-release ]; then
    . /etc/os-release
else
    echo "无法确定您的 Linux 发行版。"
    exit 1
fi

case $ID in
    ubuntu|debian|raspbian)
        echo "检测到 $ID $VERSION_CODENAME,开始安装 Docker..."
        install_docker_deb $ID $VERSION_CODENAME
        ;;
    centos|rhel|fedora|sles)
        echo "检测到 $ID,开始安装 Docker..."
        install_docker_rpm $ID
        ;;
    *)
        echo "不支持的 Linux 发行版:$ID"
        exit 1
        ;;
esac

echo "Docker 及 Docker Compose 安装完成 ✅"

权限不足

  1. 添加docker用户组(默认有)
sudo groupadd docker
  1. 添加当前用户到docker组中
sudo gpasswd -a $USER docker
  1. 更新用户组
newgrp docker

重启生效 或 提前执行(建议重启)

sudo chown root:docker /var/run/docker.sock

镜像设置

访问:https://api.suoyinmulu.com/open/v1/docker-hub/seeded-up/lists

sudo vim /etc/docker/daemon.json

刷新:

sudo systemctl daemon-reload && sudo systemctl restart docker