脚本学习 | Evergreen Notesfunction check_network () {
if ping -c1 -w1 www.baidu.com >/dev/null 2>&1;then
echo -e "\033[32mnetwork status is healthy\033[0m"
else
echo -e "\033[31网络连接失败,请检查网络环境!\033[0m"
exit 1
fi
}
function inspect_docker () {
if [ ! -f /etc/yum.repos.d/docker-ce.repo ]; then
echo -e "\033[31mdocker.repo not found\033[0m"
echo -e "\033[31mDownloading docker.repo\033[0m"
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo -e "\033[32 docker-ce.repo下载完成,正在初始化请稍候。。。\033[0m"
yum clean all && yum makecache >/dev/null 2>&1
echo -e "\033[32m 初始化完成\033[0m"
else
echo -e "\033[31m 下载失败\033[0m"
exit 1
fi
else
echo -e "\033[32mdocker.repo has been downloaded\033[0m"
continue
fi
}
function docker_install () {
if [ ! -f /usr/bin/docker ]; then
echo -e "\033[31mdocker not found\033[0m"
echo -e "\033[32mInstalling docker\033[0m"
yum install -y yum-utils >/dev/null 2>&1
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo -e "\033[32mdocker installed successlly\033[0m"
systemctl start docker && systemctl enable docker >/dev/null 2>&1
echo -e "\033[32mDocker startd successfully\033[0m"
else
echo -e "\033[31mdocker installed failed\033[0m"
exit 1
fi
else
echo -e "\033[32mdocker has been installed\033[0m"
continue
fi
}
function inspect_mirror () {
if [ ! -f /etc/docker/daemon.json ]; then
echo -e "\033[31mdocker mirror not found\033[0m"
read -p "是否现在配置镜像加速器(y/n):" mirror_url
if [ "$mirror_url" == "y" ]; then
echo -e "\033[31mConfiguring docker mirror\033[0m"
read -p "请输入镜像加速器地址:" img_url
cat >/etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["${img_url}"]
}
EOF
systemctl daemon-reload && systemctl restart docker >/dev/null 2>&1
else
echo -e "\033[31mbey\033[0m"
exit 1
fi
if [ "$?" -eq 0 ];then
echo -e "\033[32mdocker mirror configured successlly\033[0m"
else
echo -e "\033[31mdocker mirror configured failed\033[0m"
exit 1
fi
else
echo -e "\033[32mdocker mirror has been configured\033[0m"
fi
}
function start_stop_service () {
read -p "1.启动Docker服务 2.停止Docker服务 3.重启Docker服务:" docker_start
if [ "${docker_start}" == "1" ];then
systemctl start docker && systemctl enable docker >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo -e "\033[32mdocker service started successlly\033[0m"
else
echo -e "\033[31mdocker service started failed\033[0m"
fi
elif [ "${docker_start}" == "2" ];then
systemctl stop docker && systemctl disable docker >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo -e "\033[32mdocker service stoped successlly\033[0m"
else
echo -e "\033[31mdocker service stoped failed\033[0m"
fi
elif [ "${docker_start}" == "3" ];then
systemctl restart docker >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo -e "\033[32mdocker service restarted successlly\033[0m"
else
echo -e "\033[31mdocker service restarted failed\033[0m"
fi
else
echo -e "\033[31m输入错误,请输入[1-3]的数字\033[0m"
fi
}
function pull_image(){
img=(
centos
nginx:1.20.1
mysql
redis
)
for img_pull in ${img[@]};do
echo -e "\033[35mPulling(${img_pull}), please wait\033[0m"
docker pull $img_pull
if [ "$?" -eq 0 ];then
echo -e "\033[32m$img_pull pull success\033[0m"
else
echo -e "\033[31m$img_pull pull failed\033[0m"
fi
done
}
function img_delete(){
img=$(docker images --format {{.Repository}}:{{.Tag}})
for i in ${img}
do
if [ -n "$(docker ps -q --filter ancestor=${i})" ] ;then
echo -e "\033[32mrunning Docker:${i}\033[0m"
else
echo -e "\033[31Deleting an unused mirror:${i}\033[0m"
docker rmi ${i} >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo "此images[$i]已删除"
else
echo "images[$i]删除失败"
fi
fi
done
}
function del_image(){
read -p "1.删除未在使用的镜像/2.删除所有镜像(包括正在使用的):" delete_img
if [ "${delete_img}" == "1" ];then
echo -e "\033[32m正在批量删除未使用的镜像。。。\033[0m"
img_delete
elif [ "${delete_img}" == "2" ];then
echo -e "\033[33m正在停止容器。。。\033[0m"
stop_img=$(docker ps -a -q)
docker stop ${stop_img} >/dev/null 2>&1
echo -e "\033[33m正在删除所有镜像。。。\033[0m"
sleep 2
clear_img=$(docker images -q)
docker rmi -f ${clear_img} >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo -e "\033[32m镜像删除成功\033[0m"
else
echo -e "\033[31m镜像删除失败\033[0m"
exit 1
fi
else
echo -e "\033[31m输入错误,请重新输入\033[0m"
fi
}
function del_container(){
read -p "1.删除未启动的容器/2.删除所有容器(包括正在使用的):" delete_container
if [ "$delete_container" == "1" ];then
echo -e "\033[33m正在批量删除未启动的容器。。。\033[0m"
docker rm -f $(docker ps -qa --filter status=exited) >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo -e "\033[32m容器删除成功\033[0m"
else
echo -e "\033[31m容器删除失败\033[0m"
exit 1
fi
elif [ "$delete_container" == "2" ];then
echo -e "\033[33m正在批量删除所有容器。。。\033[0m"
docker rm -f $(docker ps -qa) >/dev/null 2>&1
if [ "$?" -eq 0 ];then
echo -e "\033[32m容器删除成功\033[0m"
else
echo -e "\033[31m容器删除失败\033[0m"
exit 1
fi
else
echo -e "\033[31m输入错误,请重新输入\033[0m"
fi
}
function uninstall_docker() {
echo -e "\033[33m正在卸载docker,请稍候......\033[0m"
yum -y remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin >/dev/null 2>&1
if [ "$?" -eq 0 ];then
read -p "Do you want to delete all images, containers, volumes, and networks? [y/n]" delete_docker
if [ "$delete_docker" == "y" ];then
echo -e "\033[32m卸载成功,正在删除所有镜像,容器,卷,网络...\033[0m"
rm -rf /var/lib/docker/
else
echo -e "\033[31m删除/var/lib/docker/失败\033[0m"
exit 1
fi
else
echo -e "\033[31m卸载docker失败\033[0m"
exit 1
fi
}
function system_docker(){
img_size=$(docker system df|awk 'NR==2{print $4}')
img_number=$(docker system df|awk 'NR==2{print $2}')
img_release=$(docker system df|awk 'NR==2{print $5}')
containers=$(docker system df|awk 'NR==3{print $2}')
containers_size=$(docker system df|awk 'NR==3{print $4}')
containers_release=$(docker system df|awk 'NR==3{print $5}')
volumes_number=$(docker system df|awk 'NR==4{print $3}')
volumes_size=$(docker system df|awk 'NR==4{print $5}')
volumes_release=$(docker system df|awk 'NR==4{print $6}')
cache_number=$(docker system df|awk 'NR==5{print $3}')
cache_size=$(docker system df|awk 'NR==5{print $5}')
cache_release=$(docker system df|awk 'NR==5{print $6}')
echo -e "\033[35m*************************************************************************************************
\n*当前共有[$img_number]个镜像,占用磁盘空间为:[$img_size],可释放磁盘空间为:[${img_release}]\t\t\t\t*
\n*当前创建了[$containers]个容器,总大小为:[$containers_size],可释放空间为:[${containers_release}]\t\t\t\t\t*
\n*当前定义的本地数据卷共有[$volumes_number]个,占用的磁盘总大小为:[$volumes_size],可释放的磁盘空间为:[$volumes_release]\t\t\t*
\n*当前定义的本地缓存共有[$cache_number]个,占用磁盘总大小为:[$cache_size],可释放的磁盘空间为:[$cache_release]\t\t\t*
\n*************************************************************************************************\033[0m"
}
function menu(){
echo -e "\033[34m
***************************************************************************************** \
\n*\t1.检测是否已安装Docker\t\t\t\t2.启停Docker服务 \t\t* \
\n\n*\t3.查看正在运行的容器 \t\t\t\t4.查看当前网络模式 \t\t* \
\n\n*\t5.批量拉取镜像 \t\t\t6.批量删除镜像 \t\t\t* \
\n\n*\t7.批量启动容器 \t\t\t\t8.批量删除容器 \t\t\t* \
\n\n*\t9.检查是否配置了镜像加速器 \t\t\t10.卸载Docker \t\t* \
\n\n*\t11.列出本地所有的镜像\t\t\t \t12.查看已停止运行的容器\t\t* \
\n\n*\t13.查看容器的磁盘使用情况\t\t\t 0.退出\t\t\t\t*
\n*****************************************************************************************\033[0m"
read -p "请输入要操作的选项:" num
case "$num" in
1)
inspect_docker
docker_install
;;
2)
start_stop_service
;;
3)
docker ps
;;
4)
docker network ls
;;
5)
pull_image
;;
6)
del_image
;;
7)
docker start $(docker ps -qa --filter status=running)
if [ "$?" -eq 0 ];then
echo -e "\033[32m容器启动成功\033[0m"
else
echo -e "\033[31m容器启动失败\033[0m"
exit 1
fi
;;
8)
del_container
;;
9)
inspect_mirror
;;
10)
uninstall_docker
;;
11)
docker images
;;
12)
docker ps -a --filter status=exited
;;
13)
system_docker
;;
0)
exit 0
;;
*)
echo -e "\033[31m输入错误,请重新输入[0-8]的数字\033[0m"
exit 1
;;
esac
}
echo -e "\033[33m*************Checking the network status****************"
check_network
echo -e "\033[33m*************Checking the docker status****************"
while :
do
menu
done