在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已安装完成。"