第一版:
1 #!/bin/bash 2 #this is input docker continer shell! 3 #this is 2019-01-29 4 # v1.1.2 5 read -p "请输入要执行docker的名称:" NAME #此出输入要执行docker的名称 6 a=$1 7 case $a in 8 *images) 9 if [ $a = images ];then 10 docker images|grep $NAME|awk '{print $1,$3}' 11 elif [ $a = all-images ];then 12 docker images 13 else 14 echo "error" 15 fi 16 ;; 17 *status) 18 if [ $a = status ];then 19 docker ps -a|grep $NAME 20 elif [ $a = all-status ];then 21 docker ps -a 22 else 23 echo "error" 24 fi 25 ;; 26 run*) 27 if [ $a = run ];then 28 docker run -itd --restart=always --name $NAME $(docker images|grep $NAME|awk '{print $1}') 29 elif [ $a = run-v ];then 30 docker run -itd --restart=always -v /root/:/home/ --name $NAME $(docker images|grep $NAME|awk '{print $1}') 31 elif [ $a = run-p80 ];then 32 docker run -itd --restart=always -v /root/:/home/ -p 80:80 --name $NAME $(docker images|grep $NAMW|awk '{print $1}') 33 else 34 echo "error" 35 fi 36 ;; 37 *id) 38 if [ $a = id ];then 39 docker ps -a|grep $NAME |awk '{print $1}' 40 elif [ $a = all-id ];then 41 docker ps -a|awk '{print $1,$NF}' 42 else 43 echo "error" 44 fi 45 ;; 46 *restart) 47 if [ $a = restart ];then 48 docker restart $(docker ps -a|grep $NAME |awk '{print $1}') 49 elif [ $a = all-restart ];then 50 for i in `docker ps -a|awk '{print $1}'`;do 51 docker restart $i 52 done 53 else 54 echo "error" 55 fi 56 ;; 57 *stop) 58 if [ $a = stop ];then 59 docker stop $(docker ps -a|grep $NAME |awk '{print $1}') 60 elif [ $a = all-stop ];then 61 for s in `docker ps|awk '{print $1}'`;do 62 docker stop $s 63 done 64 else 65 echo "error" 66 fi 67 ;; 68 inspect) 69 docker inspect $(docker ps -a|grep $NAME |awk '{print $1}') 70 ;; 71 *runtime) 72 if [ $a = runtime ];then 73 docker ps -a|grep $NAME |awk '{print $1,$7,$8,$9,$10,$11}' 74 elif [ $a = all-runtime ];then 75 docker ps -a|awk '{print $1,$7,$8,$9,$10,$11}' 76 else 77 echo "error" 78 fi 79 ;; 80 *start) 81 if [ $a = start ];then 82 docker start $(docker ps -a|grep $NAME |awk '{print $1}') 83 elif [ $a = all-start ];then 84 for t in `docker ps -a|grep Exited |awk '{print $1}'`;do 85 docker start $t 86 done 87 else 88 echo "error" 89 fi 90 ;; 91 logs) 92 docker logs $(docker ps -a|grep $NAME|awk '{print $1}') 93 ;; 94 rm) 95 docker rm $(docker ps -a|grep $NAME|awk '{print $1}') 96 ;; 97 help) 98 echo -e " images --获取所需的镜像名称和ID" 99 echo -e " all-images --获取所有的镜像名称和ID" 100 echo -e " status --查看所需容器的运行状态" 101 echo -e " all-status --查看所有容器的运行状态" 102 echo -e " run --运行所需的容器" 103 echo -e " run-v --运行所需的容器,并挂在数据卷目录" 104 echo -e " run-p80 --运行所需的容器,并映射端口80" 105 echo -e " id --获取已经运行的所需容器的id" 106 echo -e " all-id --获取所有已经运行的所需容器的id" 107 echo -e " restart --重启所需容器" 108 echo -e " all-restart --重启所有运行的容器" 109 echo -e " stop --停止正在运行的所需容器" 110 echo -e " all-stop --停止所有正在运行的容器" 111 echo -e " inspect --获取所需容器的信息" 112 echo -e " runtime --查看所需容器已经启动的时间" 113 echo -e " all-runtime --查看所有容器已经启动的时间" 114 echo -e " start --启动未运行的所需容器" 115 echo -e " allstart --启动所有未运行的容器" 116 echo -e " logs --查看所需容器的日志信息" 117 echo -e " help --查看帮助信息" 118 echo -e " rm --删除容器" 119 ;; 120 *) 121 echo "Please input {image|all-image|status|all-status|run|run-v|run-p80|id|all-id|restart|all-restart|stop|all-stop|inspect|runtime|all-runtime|start|all-start|logs|rm|help|}" 122 ;; 123 esac
第二版:
1 #!/bin/bash 2 #this is input docker continer shell! 3 #this is 2019-02-13 4 # v1.2.5 5 ########################################################################################## 6 # 功能: 7 # 1、 将对docker的一些基本操作记录到数据库 8 # 2、 实现预判断,创建库或表 9 # 3、 完善查询与变更操作的写入数据库操作 10 # 4、 优化了创建容器时可以自定义容器名称,以及手动指定要挂载的宿主机路径 11 # 5、 可以在容器里执行systemctl命令 12 # 6、 容器启动则在宿主机/etc/hosts 文件里添加对应的ip地址和主机名称 13 ######################################################################################### 14 # 前提条件: 15 # 1、运行此脚本的机器上已经安装了mysql数据库,数据库的一切都是默认不变的; 16 # 2、运行此脚本的机器上已经安装有docker 17 # 18 ######################################################################################## 19 read -p "请输入要执行docker的名称:" NAME #此出输入要执行docker的名称 20 z=$1 21 case $z in 22 *images) 23 if [ $z = images ];then 24 docker images|grep $NAME|awk '{print $1,$3}' 25 elif [ $z = all-images ];then 26 docker images 27 else 28 echo "error" 29 fi 30 ;; 31 *status) 32 if [ $z = status ];then 33 docker ps -a|grep $NAME 34 elif [ $z = all-status ];then 35 docker ps -a 36 else 37 echo "error" 38 fi 39 ;; 40 run*) 41 read -p "请输入容器名称:" D_NAME 42 read -p "请输入要挂载的宿主机路径:" Volume 43 if [ $z = run ];then 44 docker run -itd --restart=always -e LANG=en_US.UTF-8 -v /etc/localtime:/etc/localtime --name $D_NAME $(docker images|grep $NAME|awk '{print $1}') /usr/sbin/init 45 ID=`docker ps -a|grep $D_NAME|awk '{print $1}'` 46 IP=`docker exec -it $ID hostname -i` 47 sleep 2 48 sed -i "$a$IP $ID" /etc/hosts 49 elif [ $z = run-v ];then 50 docker run -itd --restart=always -v $Volume:/home/ -e LANG=en_US.UTF-8 -v /etc/localtime:/etc/localtime --name $D_NAME $(docker images|grep $NAME|awk '{print $1}') /usr/sbin/init 51 ID=$(docker ps -a|grep $D_NAME|awk '{print $1}') 52 IP=$(docker exec -it $ID hostname -i) 53 sleep 2 54 sed -i "$a$IP $ID" /etc/hosts 55 elif [ $z = run-p80 ];then 56 docker run -itd --restart=always -v $Volume:/home/ -e LANG=en_US.UTF-8 -v /etc/localtime:/etc/localtime -p 80:80 --name $D_NAME $(docker images|grep $NAMW|awk '{print $1}') /usr/sbin/init 57 ID=$(docker ps -a|grep $D_NAME|awk '{print $1}') 58 IP=$(docker exec -it $ID hostname -i) 59 sleep 2 60 sed -i "$a$IP $ID" /etc/hosts 61 else 62 echo "error" 63 fi 64 ;; 65 *id) 66 if [ $z = id ];then 67 docker ps -a|grep $NAME |awk '{print $1}' 68 elif [ $z = all-id ];then 69 docker ps -a|awk '{print $1,$NF}' 70 else 71 echo "error" 72 fi 73 ;; 74 *restart) 75 if [ $z = restart ];then 76 docker restart $(docker ps -a|grep $NAME |awk '{print $1}') 77 elif [ $z = all-restart ];then 78 for i in `docker ps -a|awk '{print $1}'`;do 79 docker restart $i 80 done 81 else 82 echo "error" 83 fi 84 ;; 85 *stop) 86 if [ $z = stop ];then 87 docker stop $(docker ps -a|grep $NAME |awk '{print $1}') 88 elif [ $z = all-stop ];then 89 for s in `docker ps|awk 'NR!=1{print $1}'`;do 90 docker stop $s 91 done 92 else 93 echo "error" 94 fi 95 ;; 96 inspect) 97 docker inspect $(docker ps -a|grep $NAME |awk '{print $1}') 98 ;; 99 search) 100 docker search $NAME 101 ;; 102 pull) 103 docker pull $NAME 104 ;; 105 *runtime) 106 if [ $z = only-runtime ];then 107 docker ps -a|grep $NAME |awk '{print $1,$7,$8,$9,$10,$11}' 108 elif [ $z = all-runtime ];then 109 docker ps -a|awk '{print $1,$7,$8,$9,$10,$11}' 110 else 111 echo "error" 112 fi 113 ;; 114 *start) 115 if [ $z = start ];then 116 docker start $(docker ps -a|grep $NAME |awk '{print $1}') 117 elif [ $z = all-start ];then 118 for t in `docker ps -a|grep Exited |awk '{print $1}'`;do 119 docker start $t 120 done 121 else 122 echo "error" 123 fi 124 ;; 125 logs) 126 docker logs $(docker ps -a|grep $NAME|awk '{print $1}') 127 ;; 128 *rm*) 129 if [ $z = rm ];then 130 docker rm $(docker ps -a|grep $NAME|awk '{print $1}') 131 elif [ $z = rmi ];then 132 docker rmi $(docker images|grep $NAME|awk '{print $3}') 133 elif [ $z = all-rm ];then 134 for d in `docker ps -a|awk 'NR!=1{print $1}'`;do 135 docker rm $d 136 done 137 else 138 echo "error" 139 fi 140 ;; 141 help) 142 echo -e " images --获取所需的镜像名称和ID" 143 echo -e " all-images --获取所有的镜像名称和ID" 144 echo -e " status --查看所需容器的运行状态" 145 echo -e " all-status --查看所有容器的运行状态" 146 echo -e " run --运行所需的容器" 147 echo -e " pull --下载所需镜像" 148 echo -e " search --查询所需镜像" 149 echo -e " run-v --运行所需的容器,并挂在数据卷目录" 150 echo -e " run-p80 --运行所需的容器,并映射端口80" 151 echo -e " id --获取已经运行的所需容器的id" 152 echo -e " all-id --获取所有已经运行的所需容器的id" 153 echo -e " restart --重启所需容器" 154 echo -e " all-restart --重启所有运行的容器" 155 echo -e " stop --停止正在运行的所需容器" 156 echo -e " all-stop --停止所有正在运行的容器" 157 echo -e " inspect --获取所需容器的信息" 158 echo -e " only-runtime --查看所需容器已经启动的时间" 159 echo -e " all-runtime --查看所有容器已经启动的时间" 160 echo -e " start --启动未运行的所需容器" 161 echo -e " allstart --启动所有未运行的容器" 162 echo -e " logs --查看所需容器的日志信息" 163 echo -e " help --查看帮助信息" 164 echo -e " rm --删除容器" 165 echo -e " all-rm --删除all容器" 166 echo -e " rmi --删除镜像" 167 ;; 168 *) 169 echo "Please input {image|all-image|status|all-status|pull|run|run-v|run-p80|id|all-id|restart|all-restart|stop|all-stop|inspect|runtime|all-runtime|start|all-start|logs|rm|rmi|help|}" 170 ;; 171 esac 172 173 #################################### 174 #将执行查询操作的步骤记录到数据库 175 ################################### 176 177 for b in images status id inspect runtime logs search help 178 do 179 mysql -e "show databases"|grep docker >>/dev/null #进入docker库,验证数据库是否创建有docker库 180 if [ $? = 0 ];then #如果查询有docker库,则执行下面操作 181 if [ $z = $b ];then 182 mysql -D docker -e "show tables" |grep select>>/dev/null 183 if [ $? = 0 ];then #查询表成功,则执行下面步骤 184 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_$b")" 185 else 186 mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建 187 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_$b")" 188 fi 189 elif [ $z = all-$b ];then 190 mysql -D docker -e "show tables" |grep select>>/dev/null 191 if [ $? = 0 ];then #查询表成功,则执行下面步骤 192 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_all-$b")" 193 else 194 mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建 195 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_$b")" 196 fi 197 fi 198 else 199 mysql -e "create database docker" #如果没有docker库,则创建docker数据库 200 if [ $? = 0 ];then #数据库创建成功,则成功执行下面步骤 201 if [ $z = $b ];then 202 mysql -D docker -e "show tables" |grep select>>/dev/null 203 if [ $? = 0 ];then #查询表成功,则执行下面步骤 204 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_$b")" 205 else 206 mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建 207 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_$b")" 208 fi 209 elif [ $z = all-$b ];then 210 mysql -D docker -e "show tables" grep select>>/dev/null 211 if [ $? = 0 ];then #查询表成功,则执行下面步骤 212 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_all-$b")" 213 else 214 mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建 215 mysql -e "insert into docker.select(name,date,number,action) values("$NAME","$(date +%F-%T)",1,"select_$b")" 216 fi 217 fi 218 else 219 echo "error: don't unknow docker database !!!" #创建docker数据库失败,则打印此提示错误 220 fi 221 fi 222 done 223 224 ################################### 225 #将变更的操作步骤记录到数据库 226 ################################## 227 228 for c in run restart stop start rm pull 229 do 230 mysql -e "show databases" |grep docker >/dev/null 231 if [ $? = 0 ];then 232 if [ $z = $c ];then 233 mysql -e "select * from docker.add">/dev/null 234 if [ $? = 0 ];then 235 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","$z")" 236 else 237 mysql -e "create table docker.add (name char(64),date char(64),action char(64))" #查询无此表,则进行创建 238 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","$z")" 239 fi 240 elif [ $z = all-$c ];then 241 mysql -e "select * from docker.add">/dev/null 242 if [ $? = 0 ];then 243 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","all-$z")" 244 else 245 mysql -e "create table docker.add (name char(64),date char(64),action char(64))" #查询无此表,则进行创建 246 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","all-$z")" 247 fi 248 fi 249 else 250 mysql -e "create database docker" 251 if [ $? = 0 ];then 252 if [ $z = $c ];then 253 mysql -e "select * from docker.add">/dev/null 254 if [ $? = 0 ];then 255 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","$z")" 256 else 257 mysql -e "create table docker.add (name char(64), date char(64), action char(64))" 258 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","$z")" 259 fi 260 elif [ $z = *$c* ];then 261 mysql -e "select * from docker.add">/dev/null 262 if [ $? = 0 ];then 263 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","all-$z")" 264 else 265 mysql -e "create table docker.add (name char(64), date char(64), action char(64))" 266 mysql -e "insert into docker.add(name,date,action) values("$NAME","$(date +%F-%T)","all-$z")" 267 fi 268 fi 269 else 270 echo "error: don't unknow docker database!!!!" 271 fi 272 fi 273 done 274 275 ################################ 276 #将已经下载的镜像记录到数据库 277 ############################### 278 279 if [ $z = pull ];then 280 mysql -e "insert into docker.images(name,date) values("$(docker images|grep $NAME|awk '{print $1}')","$(date +%F-%T)")" 281 fi 282 283 284 285 ####################################################################################################### 286 # 说明: 287 # 1、此后版本需添加docker 命令的操作记录; 288 # 2、此后版本添加linux系统对docker服务的一些动作,如:启动、重启、停止等等类似的一些操作 289 # 290 ########################################################################################################