文章目录
- 脚本简介
- 脚本注解
- 注意:
- 脚本内容
脚本简介
- 基于运维统一脚本中,常见服务部署下的docker基础环境选项docker基础环境安装
- 使用yum安装(yum仓库),系统版本Centos7
脚本注解
- 该脚本为了安装服务的快速简便,提供两种安装方式,在线安装和离线安装
- 在线安装,则执行脚本后,根据提示选择在线安装的方式即可
- 离线安装,则需要提前把下载离线安装包,且存放在指定的路径下
- 修改脚本,最上边的变量即可
docker_tar_dir="/opt/docker"
docker_tar_name="docker-19.03.tar.gz"
docker_tar_name1="docker"
#安装完成后是否清理解压后的文件、目录
docker_pd="no"
- docker离线安装包下载
注意:
- 最小化安装时,确认基础命令,可能会导致脚本执行失败!!!
- 建议手动安装基础软件包(wget、net-tools、lrzsz),或者先执行初始化服务器配置脚本
- 可重复执行脚本,具有docker服务检查功能
脚本内容
#!/bin/bash
#该脚本用于测试环境部署docker
#所有者:北城半夏
#
#当前版本
#v1.0.1
#################################################################################
#离线安装docker#
###############
docker_tar_dir="/opt/docker"
docker_tar_name="docker-19.03.tar.gz"
docker_tar_name1="docker"
#安装完成后是否清理解压后的文件、目录
docker_pd="no"
#################################################################################
# docker基础环境部署 #
#################################################################################
info(){
echo -e "\033[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[36m$1\033[0m "
}
info1(){
echo -e "\033[36m $1 \033[0m "
}
info2(){
echo -e "\033[34m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[35m$1\033[0m "
}
info6(){
echo -e "\033[33m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[91m$1\033[0m "
}
info7(){
echo -e "\033[35m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[32m$1\033[0m "
}
info8(){
echo -e "\033[31m 【`hostname` `date '+%Y-%m-%d %H:%M:%S'`】\033[0m" "\033[35m$1\033[0m "
}
#在线安装docker
install_docker(){
#官方网站下载最新版docker
info "官方网站下载最新版docker"
yum install -y vim yum-utils bash-completion net-tools gcc ipvsadm wget ipset bc &>/dev/null
if [ $? -eq 0 ];then
info "安装docker的相关依赖包"
else
info8 "install docker CE fail"
fi
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo &>/dev/null
if [ $? -eq 0 ];then
info "添加docker的在线yum仓库"
else
info8 "install docker CE fail"
fi
info6 "重新加载yum仓库,根据网速决定等待的时间,请耐心等待!!!"
yum makecache &>/dev/null
info "yum仓库加载成功"
info3
info4 "开始安装docker基础环境,亲耐心等待"
yum -y install docker-ce >/dev/null
[ $? -eq 0 ] && info2 "docker 环境安装成功"
#开启路由转发
cat >>/etc/sysctl.conf<<EOF
net.ipv4.ip_forward = 1
EOF
sysctl -p &>/dev/null
#添加阿里云镜像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://geuj9lut.mirror.aliyuncs.com"]
}
EOF
}
off_line_install_docker(){
info6 "离线安装包的名称(${docker_tar_name}):"
info6 "离线安装包解压后目录(${docker_tar_name1}):"
info6 "离线安装包的位置(${docker_tar_dir}):"
read -p "安装完成后是否清理解压后的文件、目录(${docker_pd}):" docker_pd
local path_dir_tar="$docker_tar_dir"
local docker_tar_name1=${docker_tar_name1}
local docker_tar_name=${docker_tar_name}
local docker_pd=${docker_pd}
info "离线安装docke,版本基于用户提供的离线安装包${path_dir_tar}/${docker_tar_name}"
if [ -f ${path_dir_tar}/${docker_tar_name} ];then
cd ${path_dir_tar}
info "解压${docker_tar_name}到${path_dir_tar}"
tar -xf ${docker_tar_name} -C ${path_dir_tar}
[ $? -eq 0 ] && info7 "${docker_tar_name}解压成功,开始准备安装,请等待!!!"
cd ${path_dir_tar}/${docker_tar_name1}
yum -y install ./*.rpm >/dev/null
[ $? -eq 0 ] && info7 "docker安装成功"
else
info8 "${path_dir_tar}/${docker_tar_name} 不存在,请检查后重试!!!"
mkdir -p ${path_dir_tar}
exit 0
fi
if [ ${docker_pd} == yes ];then
rm -rf ${path_dir_tar}
[ $? -eq 0 ] && info "清理已安装的安装包及相应的压缩包"
fi
#开启路由转发
cat >>/etc/sysctl.conf<<EOF
net.ipv4.ip_forward = 1
EOF
sysctl -p &>/dev/null
#添加阿里云镜像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://geuj9lut.mirror.aliyuncs.com"]
}
EOF
}
#安装docker是的帮助信息
install_docker_help(){
info8 "离线安装docker时,需要提前准备好对应的RPM的安装包,且需要存放在$docker_tar_dir"
info8 "相应的配置可根据屏幕打印的提示继续即可"
}
#启动docker
start_docker(){
if [ `rpm -qa|grep docker |wc -l` -eq 0 ];then
install_docker_help
read -p "选择docker的安装方式:(在线=0,离线=1):" start_install_docerk
start_install_docerk=${start_install_docerk:-0}
if [ ${start_install_docerk} -eq 0 ];then
install_docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker >/dev/null
else
off_line_install_docker
systemctl restart docker
systemctl enable docker >/dev/null
fi
else
a=`rpm -qa|grep docker-ce|tail -1`
info8 "\033[32m ${a}已安装,不需要重新部署\033[0m"
local docker_status=`systemctl status docker |grep Active|awk '{print $2}'`
if [ ! ${docker_status} == "active" ];then
systemctl start docker
info8 "\033[32m docker服务已重新正常启动\033[0m"
else
info8 "\033[32m docker服务已正常启动!!!\033[0m"
fi
fi
}
start_docker