说明:该脚本适用于Centos 7系列的系统,安装docker版本为Docker18.06CE。
#!/bin/bash
#该脚本内容有:升级Centos7内核、安装Docker18.06CE
read -p "请输入您要执行的操作(按'h'可查看帮助): " let
#set -eo pipefail
function log (){
msg="$1"
if [ $? -eq 0 ];then
echo "${msg} 执行成功" >>/tmp/install_docker.log
else
echo "${msg} 执行失败" >>/tmp/install_docker_error.log
fi
}
function Current_conf(){
Kernel=`uname -r`
echo -e "\033[33m当前内核版本为:${Kernel} \033[0m"
}
#函数-升级内核
function Update_kernel() {
#安装工具
yum -y install vim net-tools ntp ntpdate yum-utils device-mapper-persistent-data lvm2
log "安装常用工具"
#关闭防火墙,禁止firewalld开机启动
systemctl stop firewalld.service & systemctl disable firewalld.service
log "防火墙设置"
#升级内核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
#删除旧版本工具包
yum remove -y kernel-tools-libs.x86_64 kernel-tools.x86_64
log "删除旧版本工具包"
# 安装新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
log "安装新版本工具包"
sed -i 's/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/g' /etc/default/grub
log "修改/etc/default/grub文件"
grub2-mkconfig -o /boot/grub2/grub.cfg
log "设置内核启动项"
}
#函数-安装docker-ce-18.06.0.ce-3.el7
function Docker(){
docker --version
if [ $? -eq 0 ];then
echo "docker 已经安装"
exit 0
fi
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce.x86_64 --showduplicates | sort -r|grep "docker-ce-18.06.0.ce-3.el7"
log "查询docker-ce18软件包"
yum makecache fast && yum -y install docker-ce-18.06.0.ce-3.el7
log "docker-ce 安装"
#设置阿里云加速
[ -d /etc/docker ] || mkdir -p /etc/docker && [ -f /etc/docker/daemon.json ] && rm -rf /etc/docker/daemon.json
cat > /etc/docker/daemon.json <<EOF
{
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"],
"registry-mirrors": ["https://tgv7oaqr.mirror.aliyuncs.com"]
}
EOF
log "设置阿里云加速"
#启动docker
systemctl daemon-reload && systemctl restart docker
log "启动docker"
#设置开机启动
systemctl enable docker.service
log "设置开机自启动"
}
while [ -n $let ]
do
case $let in
c | conf)
Docker
echo -e "\033[33mDocker 服务已经搭建完成,详细情况见日志(/tmp/install_docker.log) \033[0m"
exit 1
;;
u | update)
Update_kernel
echo -e "\033[33m请检查当前安装进程,如无异常,请手动重启服务器,详细情况见日志(/tmp/install_docker.log) \033[0m"
exit 1
;;
q | quit)
exit 1
;;
k | kernel)
Current_conf
;;
h | help)
echo -e "\033[33m输入 u/update 即:升级内核 --> 配置docker环境 \033[0m"
echo -e "\033[33m输入 c/conf 即:服务器后重启方可执行 --> 安装docker \033[0m"
echo -e "\033[33m输入 q/quit 即:退出 \033[0m"
echo -e "\033[33m输入 h/help 即:帮助 \033[0m"
;;
*)
echo -e "\033[31m======你输入参数有误,输入 'h/help' 查看帮助=======\033[0m"
;;
esac
read -p "请输入您要执行的操作(按'h'可查看帮助): " let
done