【自立更生】Linux系统安装Docker/Docker Compose

66 阅读2分钟

在Linux服务器上安装Docker和Docker Compose是一个相对直接的过程。以下是一个详细指南,适用于大多数基于Debian和RHEL的发行版,如Ubuntu、Debian、CentOS和RHEL等。请注意,安装步骤可能会根据您的具体Linux发行版和Docker的最新版本有所不同。

安装Docker

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

#!/bin/bash

# 更新软件包列表
sudo apt-get update

# 安装必要的包
sudo apt-get install -y ca-certificates curl software-properties-common

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

# 下载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

# 根据系统是Ubuntu还是Debian,添加相应的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

# 再次更新软件包列表以确保可以访问Docker仓库
sudo apt-get update

echo "Docker仓库已添加。您现在可以安装Docker了。"

# 安装docker及docker-compose
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

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

#!/bin/bash

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

# 检测系统发行版并相应地添加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

# 更新yum缓存
sudo yum makecache fast

echo "Docker仓库已添加。您现在可以安装Docker了。"

# 安装docker及docker-compose
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

以下为通用脚本

(未在所有系统测试,如有报错,欢迎反馈)

#!/bin/bash

set -e

# 定义安装Docker的函数,适用于基于DEB的发行版
install_docker_deb() {
    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL "https://download.docker.com/linux/$1/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/$1 $2 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
}

# 定义安装Docker的函数,适用于基于RPM的发行版
install_docker_rpm() {
    if [ "\$1" = "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/$1/docker-ce.repo"
    sudo yum makecache fast
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    sudo systemctl start 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"
        install_docker_deb $ID $VERSION_CODENAME
        ;;
    centos|rhel|fedora)
        install_docker_rpm $ID
        ;;
    sles)
        install_docker_rpm $ID
        ;;
    *)
        echo "不支持的Linux发行版。"
        exit 1
        ;;
esac

echo "Docker及Docker Compose已安装完成。"