docker命令脚本

第一版:

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 ########################################################################################################
原文地址:https://www.cnblogs.com/hui-shao/p/docker_sh.html