by:垃圾程序员
提供一个Centos中安装Docker软件的Shell脚本模板,大家可以自取改造:
#!/bin/bash
# 检查是否已经安装Docker
if command -v docker &> /dev/null; then
echo "检测到您已经安装了Docker。"
read -p "是否要卸载并重新安装Docker?[y/n]: " reinstall_choice
if [[ $reinstall_choice == "n" || $reinstall_choice == "N" ]]; then
echo "取消重新安装Docker。"
exit 0
fi
echo "卸载Docker..."
sudo yum -y remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
fi
echo "欢迎安装Docker!请选择您希望使用的安装源:"
echo "1. 官方源(官方源是Docker官方提供的源,可信度高,推荐使用。)"
echo "2. 阿里云源(阿里云源是在国内比较稳定和快速的镜像源,推荐使用。)"
echo "3. 清华源(清华源也是国内常用的镜像源,提供了稳定可靠的服务,推荐使用。)"
read -p "请输入选项号码: " source_choice
case $source_choice in
1)
echo "您选择使用官方源进行安装"
repo_url="http://download.docker.com/linux/centos/docker-ce.repo"
;;
2)
echo "您选择使用阿里云源进行安装"
repo_url="https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo"
;;
3)
echo "您选择使用清华源进行安装"
repo_url="https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo"
;;
*)
echo "无效的选项"
exit 1
;;
esac
echo "请选择Docker版本类型:"
echo "1. 最新稳定版(如果您对稳定性有较高要求,并且希望使用经过全面测试和验证的版本,请选择最新稳定版。)"
echo "2. 最新版(包括预发布版和稳定版)如果您想要尝试最新功能和更新,无论是预发布版还是稳定版,请选择最新版。"
echo "3. 指定版本(如果您有特定的Docker版本需求,请选择指定版本,并确保输入正确的版本号。)"
read -p "请输入选项号码: " version_choice
case $version_choice in
1)
echo "您选择安装最新稳定版Docker"
package_name="docker-ce docker-ce-cli containerd.io"
;;
2)
echo "您选择安装最新版Docker(包括预发布版和稳定版)"
package_name="docker-ce docker-ce-cli containerd.io"
;;
3)
read -p "请输入您想要安装的Docker版本号: " specified_version
# 使用正则表达式验证版本号格式
if [[ ! $specified_version =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(-[a-zA-Z0-9_]+)?$ ]]; then
echo "无效的版本号格式!请重新输入。"
exit 1
fi
echo "您选择安装指定版本Docker: $specified_version"
read -p "请再次确认是否安装指定版本Docker: $specified_version?[y/n]: " confirm_choice
if [[ $confirm_choice == "y" || $confirm_choice == "Y" ]]; then
package_name="docker-ce-$specified_version docker-ce-cli-$specified_version containerd.io"
else
echo "取消安装指定版本Docker。"
exit 0
fi
;;
*)
echo "无效的选项"
exit 1
;;
esac
# 添加安装源
sudo yum-config-manager --add-repo $repo_url
# 检查源是否成功添加
if [ $? -eq 0 ]; then
echo "安装源添加成功!"
else
echo "安装源添加失败,请检查您输入的URL地址和网络连接。"
exit 1
fi
# 安装Docker
sudo yum -y install $package_name
# 检查安装是否成功
if [ $? -eq 0 ]; then
echo "Docker安装成功!"
else
echo "Docker安装失败,请检查您输入的版本号和包名称。"
exit 1
fi
# 启动Docker服务
sudo systemctl start docker
# 检查Docker服务是否启动成功
if [ $? -eq 0 ]; then
echo "Docker服务已成功启动!"
else
echo "Docker服务启动失败,请检查相关问题。"
exit 1
fi
# 设置Docker开机启动
sudo systemctl enable docker
# 检查是否成功设置Docker开机启动
if [ $? -eq 0 ]; then
echo "已成功设置Docker开机启动!"
else
echo "设置Docker开机启动失败,请检查相关问题。"
exit 1
fi
echo "Docker安装过程已完成,请享受它吧!"
echo ""
# 配置网络代理
read -p "是否需要配置网络代理?[y/n]: " proxy_choice
if [[ $proxy_choice == "y" || $proxy_choice == "Y" ]]; then
read -p "请输入代理服务器地址(例如:http://proxy.example.com:8080): " proxy_server
echo "设置Docker网络代理..."
mkdir -p /etc/systemd/system/docker.service.d
echo "[Service]" | sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf
echo "Environment=\"HTTP_PROXY=$proxy_server\" \"HTTPS_PROXY=$proxy_server\"" | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "Docker网络代理已配置。"
fi
echo ""
# 配置存储驱动类型
read -p "是否需要配置存储驱动类型?[y/n]: " storage_choice
if [[ $storage_choice == "y" || $storage_choice == "Y" ]]; then
echo "请选择存储驱动类型:"
echo "1. overlay2 (默认)"
echo "2. aufs"
read -p "请输入选项号码: " storage_driver_choice
case $storage_driver_choice in
1)
echo "您选择使用overlay2作为存储驱动"
mkdir -p /etc/docker
echo "{ \"storage-driver\": \"overlay2\" }" | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
;;
2)
echo "您选择使用aufs作为存储驱动"
mkdir -p /etc/docker
echo "{ \"storage-driver\": \"aufs\" }" | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
;;
*)
echo "无效的选项"
exit 1
;;
esac
fi
echo ""
# 添加用户到docker组
read -p "是否需要将其他用户添加到docker组?[y/n]: " user_choice
if [[ $user_choice == "y" || $user_choice == "Y" ]]; then
read -p "请输入要添加到docker组的用户名: " username
sudo usermod -aG docker $username
echo "用户 $username 已添加到docker组。"
echo "请确保注销并重新登录以使更改生效。"
fi
echo ""
echo ""
# 输出安装验证和进一步配置的信息
echo "请使用以下命令验证Docker安装是否成功:"
echo "docker version"
echo ""
echo "如果需要进一步配置Docker,请参考官方文档或相关教程。"
只要全力以赴就无所谓失败