• 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 ########################################################################################################
  • 相关阅读:
    HDU 1176 免费馅饼(DP)
    微通道的兵锋 阿里将血腥
    head first c<11>在根据网络编程
    ZOJ 3795 Grouping(Tarjan收缩点+DAG)
    【设计和算法分析】3、二进制搜索
    杨:联想的创新将成为打造最酷的助推力的重要器件
    android 如何将电话簿SDN数字和其他普通的数字混合在一起?
    redhat6.3已安装was6.1你可以不弹出安装程序
    Android属于查询执行情况的电话号码
    table在 点击线条颜色
  • 原文地址:https://www.cnblogs.com/hui-shao/p/docker_sh.html
Copyright © 2020-2023  润新知