第一版:

  1 #!/bin/bash
#this is input docker continer shell!
#this is --
# v1.1.2
read -p "请输入要执行docker的名称:" NAME #此出输入要执行docker的名称
a=$
case $a in
*images)
if [ $a = images ];then
docker images|grep $NAME|awk '{print $1,$3}'
elif [ $a = all-images ];then
docker images
else
echo "error"
fi
;;
*status)
if [ $a = status ];then
docker ps -a|grep $NAME
elif [ $a = all-status ];then
docker ps -a
else
echo "error"
fi
;;
run*)
if [ $a = run ];then
docker run -itd --restart=always --name $NAME $(docker images|grep $NAME|awk '{print $1}')
elif [ $a = run-v ];then
docker run -itd --restart=always -v /root/:/home/ --name $NAME $(docker images|grep $NAME|awk '{print $1}')
elif [ $a = run-p80 ];then
docker run -itd --restart=always -v /root/:/home/ -p : --name $NAME $(docker images|grep $NAMW|awk '{print $1}')
else
echo "error"
fi
;;
*id)
if [ $a = id ];then
docker ps -a|grep $NAME |awk '{print $1}'
elif [ $a = all-id ];then
docker ps -a|awk '{print $1,$NF}'
else
echo "error"
fi
;;
*restart)
if [ $a = restart ];then
docker restart $(docker ps -a|grep $NAME |awk '{print $1}')
elif [ $a = all-restart ];then
for i in `docker ps -a|awk '{print $1}'`;do
docker restart $i
done
else
echo "error"
fi
;;
*stop)
if [ $a = stop ];then
docker stop $(docker ps -a|grep $NAME |awk '{print $1}')
elif [ $a = all-stop ];then
for s in `docker ps|awk '{print $1}'`;do
docker stop $s
done
else
echo "error"
fi
;;
inspect)
docker inspect $(docker ps -a|grep $NAME |awk '{print $1}')
;;
*runtime)
if [ $a = runtime ];then
docker ps -a|grep $NAME |awk '{print $1,$7,$8,$9,$10,$11}'
elif [ $a = all-runtime ];then
docker ps -a|awk '{print $1,$7,$8,$9,$10,$11}'
else
echo "error"
fi
;;
*start)
if [ $a = start ];then
docker start $(docker ps -a|grep $NAME |awk '{print $1}')
elif [ $a = all-start ];then
for t in `docker ps -a|grep Exited |awk '{print $1}'`;do
docker start $t
done
else
echo "error"
fi
;;
logs)
docker logs $(docker ps -a|grep $NAME|awk '{print $1}')
;;
rm)
docker rm $(docker ps -a|grep $NAME|awk '{print $1}')
;;
help)
echo -e "\timages \t--获取所需的镜像名称和ID"
echo -e "\tall-images\t--获取所有的镜像名称和ID"
echo -e "\tstatus \t--查看所需容器的运行状态"
echo -e "\tall-status\t--查看所有容器的运行状态"
echo -e "\trun \t--运行所需的容器"
echo -e "\trun-v \t--运行所需的容器,并挂在数据卷目录"
echo -e "\trun-p80 \t--运行所需的容器,并映射端口80"
echo -e "\tid \t--获取已经运行的所需容器的id"
echo -e "\tall-id \t--获取所有已经运行的所需容器的id"
echo -e "\trestart \t--重启所需容器"
echo -e "\tall-restart\t--重启所有运行的容器"
echo -e "\tstop \t--停止正在运行的所需容器"
echo -e "\tall-stop\t--停止所有正在运行的容器"
echo -e "\tinspect \t--获取所需容器的信息"
echo -e "\truntime \t--查看所需容器已经启动的时间"
echo -e "\tall-runtime\t--查看所有容器已经启动的时间"
echo -e "\tstart \t--启动未运行的所需容器"
echo -e "\tallstart\t--启动所有未运行的容器"
echo -e "\tlogs \t--查看所需容器的日志信息"
echo -e "\thelp \t--查看帮助信息"
echo -e "\trm \t--删除容器"
;;
*)
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|}"
;;
esac

第二版:

 #!/bin/bash
#this is input docker continer shell!
#this is --
# v1.2.5
##########################################################################################
# 功能:
# 、 将对docker的一些基本操作记录到数据库
# 、 实现预判断,创建库或表
# 、 完善查询与变更操作的写入数据库操作
# 、 优化了创建容器时可以自定义容器名称,以及手动指定要挂载的宿主机路径
# 、 可以在容器里执行systemctl命令
# 、 容器启动则在宿主机/etc/hosts 文件里添加对应的ip地址和主机名称
#########################################################################################
# 前提条件:
# 、运行此脚本的机器上已经安装了mysql数据库,数据库的一切都是默认不变的;
# 、运行此脚本的机器上已经安装有docker
#
########################################################################################
read -p "请输入要执行docker的名称:" NAME #此出输入要执行docker的名称
z=$
case $z in
*images)
if [ $z = images ];then
docker images|grep $NAME|awk '{print $1,$3}'
elif [ $z = all-images ];then
docker images
else
echo "error"
fi
;;
*status)
if [ $z = status ];then
docker ps -a|grep $NAME
elif [ $z = all-status ];then
docker ps -a
else
echo "error"
fi
;;
run*)
read -p "请输入容器名称:" D_NAME
read -p "请输入要挂载的宿主机路径:" Volume
if [ $z = run ];then
docker run -itd --restart=always -e LANG=en_US.UTF- -v /etc/localtime:/etc/localtime --name $D_NAME $(docker images|grep $NAME|awk '{print $1}') /usr/sbin/init
ID=`docker ps -a|grep $D_NAME|awk '{print $1}'`
IP=`docker exec -it $ID hostname -i`
sleep
sed -i "\$a$IP\t$ID" /etc/hosts
elif [ $z = run-v ];then
docker run -itd --restart=always -v $Volume:/home/ -e LANG=en_US.UTF- -v /etc/localtime:/etc/localtime --name $D_NAME $(docker images|grep $NAME|awk '{print $1}') /usr/sbin/init
ID=$(docker ps -a|grep $D_NAME|awk '{print $1}')
IP=$(docker exec -it $ID hostname -i)
sleep
sed -i "\$a$IP\t$ID" /etc/hosts
elif [ $z = run-p80 ];then
docker run -itd --restart=always -v $Volume:/home/ -e LANG=en_US.UTF- -v /etc/localtime:/etc/localtime -p : --name $D_NAME $(docker images|grep $NAMW|awk '{print $1}') /usr/sbin/init
ID=$(docker ps -a|grep $D_NAME|awk '{print $1}')
IP=$(docker exec -it $ID hostname -i)
sleep
sed -i "\$a$IP\t$ID" /etc/hosts
else
echo "error"
fi
;;
*id)
if [ $z = id ];then
docker ps -a|grep $NAME |awk '{print $1}'
elif [ $z = all-id ];then
docker ps -a|awk '{print $1,$NF}'
else
echo "error"
fi
;;
*restart)
if [ $z = restart ];then
docker restart $(docker ps -a|grep $NAME |awk '{print $1}')
elif [ $z = all-restart ];then
for i in `docker ps -a|awk '{print $1}'`;do
docker restart $i
done
else
echo "error"
fi
;;
*stop)
if [ $z = stop ];then
docker stop $(docker ps -a|grep $NAME |awk '{print $1}')
elif [ $z = all-stop ];then
for s in `docker ps|awk 'NR!=1{print $1}'`;do
docker stop $s
done
else
echo "error"
fi
;;
inspect)
docker inspect $(docker ps -a|grep $NAME |awk '{print $1}')
;;
search)
docker search $NAME
;;
pull)
docker pull $NAME
;;
*runtime)
if [ $z = only-runtime ];then
docker ps -a|grep $NAME |awk '{print $1,$7,$8,$9,$10,$11}'
elif [ $z = all-runtime ];then
docker ps -a|awk '{print $1,$7,$8,$9,$10,$11}'
else
echo "error"
fi
;;
*start)
if [ $z = start ];then
docker start $(docker ps -a|grep $NAME |awk '{print $1}')
elif [ $z = all-start ];then
for t in `docker ps -a|grep Exited |awk '{print $1}'`;do
docker start $t
done
else
echo "error"
fi
;;
logs)
docker logs $(docker ps -a|grep $NAME|awk '{print $1}')
;;
*rm*)
if [ $z = rm ];then
docker rm $(docker ps -a|grep $NAME|awk '{print $1}')
elif [ $z = rmi ];then
docker rmi $(docker images|grep $NAME|awk '{print $3}')
elif [ $z = all-rm ];then
for d in `docker ps -a|awk 'NR!=1{print $1}'`;do
docker rm $d
done
else
echo "error"
fi
;;
help)
echo -e "\timages \t--获取所需的镜像名称和ID"
echo -e "\tall-images\t--获取所有的镜像名称和ID"
echo -e "\tstatus \t--查看所需容器的运行状态"
echo -e "\tall-status\t--查看所有容器的运行状态"
echo -e "\trun \t--运行所需的容器"
echo -e "\tpull \t--下载所需镜像"
echo -e "\tsearch \t--查询所需镜像"
echo -e "\trun-v \t--运行所需的容器,并挂在数据卷目录"
echo -e "\trun-p80 \t--运行所需的容器,并映射端口80"
echo -e "\tid \t--获取已经运行的所需容器的id"
echo -e "\tall-id \t--获取所有已经运行的所需容器的id"
echo -e "\trestart \t--重启所需容器"
echo -e "\tall-restart\t--重启所有运行的容器"
echo -e "\tstop \t--停止正在运行的所需容器"
echo -e "\tall-stop\t--停止所有正在运行的容器"
echo -e "\tinspect \t--获取所需容器的信息"
echo -e "\tonly-runtime \t--查看所需容器已经启动的时间"
echo -e "\tall-runtime\t--查看所有容器已经启动的时间"
echo -e "\tstart \t--启动未运行的所需容器"
echo -e "\tallstart\t--启动所有未运行的容器"
echo -e "\tlogs \t--查看所需容器的日志信息"
echo -e "\thelp \t--查看帮助信息"
echo -e "\trm \t--删除容器"
echo -e "\tall-rm \t--删除all容器"
echo -e "\trmi \t--删除镜像"
;;
*)
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|}"
;;
esac ####################################
#将执行查询操作的步骤记录到数据库
################################### for b in images status id inspect runtime logs search help
do
mysql -e "show databases"|grep docker >>/dev/null #进入docker库,验证数据库是否创建有docker库
if [ $? = ];then #如果查询有docker库,则执行下面操作
if [ $z = $b ];then
mysql -D docker -e "show tables" |grep select>>/dev/null
if [ $? = ];then #查询表成功,则执行下面步骤
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_$b\")"
else
mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_$b\")"
fi
elif [ $z = all-$b ];then
mysql -D docker -e "show tables" |grep select>>/dev/null
if [ $? = ];then #查询表成功,则执行下面步骤
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_all-$b\")"
else
mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_$b\")"
fi
fi
else
mysql -e "create database docker" #如果没有docker库,则创建docker数据库
if [ $? = ];then #数据库创建成功,则成功执行下面步骤
if [ $z = $b ];then
mysql -D docker -e "show tables" |grep select>>/dev/null
if [ $? = ];then #查询表成功,则执行下面步骤
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_$b\")"
else
mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_$b\")"
fi
elif [ $z = all-$b ];then
mysql -D docker -e "show tables" grep select>>/dev/null
if [ $? = ];then #查询表成功,则执行下面步骤
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_all-$b\")"
else
mysql -e "create table docker.select (name char(64),date char(64),number char(64),action char(64))" #查询无此表,则进行创建
mysql -e "insert into docker.select(name,date,number,action) values(\"$NAME\",\"$(date +%F-%T)\",1,\"select_$b\")"
fi
fi
else
echo "error: don't unknow docker database !!!" #创建docker数据库失败,则打印此提示错误
fi
fi
done ###################################
#将变更的操作步骤记录到数据库
################################## for c in run restart stop start rm pull
do
mysql -e "show databases" |grep docker >/dev/null
if [ $? = ];then
if [ $z = $c ];then
mysql -e "select * from docker.add">/dev/null
if [ $? = ];then
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"$z\")"
else
mysql -e "create table docker.add (name char(64),date char(64),action char(64))" #查询无此表,则进行创建
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"$z\")"
fi
elif [ $z = all-$c ];then
mysql -e "select * from docker.add">/dev/null
if [ $? = ];then
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"all-$z\")"
else
mysql -e "create table docker.add (name char(64),date char(64),action char(64))" #查询无此表,则进行创建
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"all-$z\")"
fi
fi
else
mysql -e "create database docker"
if [ $? = ];then
if [ $z = $c ];then
mysql -e "select * from docker.add">/dev/null
if [ $? = ];then
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"$z\")"
else
mysql -e "create table docker.add (name char(64), date char(64), action char(64))"
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"$z\")"
fi
elif [ $z = *$c* ];then
mysql -e "select * from docker.add">/dev/null
if [ $? = ];then
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"all-$z\")"
else
mysql -e "create table docker.add (name char(64), date char(64), action char(64))"
mysql -e "insert into docker.add(name,date,action) values(\"$NAME\",\"$(date +%F-%T)\",\"all-$z\")"
fi
fi
else
echo "error: don't unknow docker database!!!!"
fi
fi
done ################################
#将已经下载的镜像记录到数据库
############################### if [ $z = pull ];then
mysql -e "insert into docker.images(name,date) values(\"$(docker images|grep $NAME|awk '{print $1}')\",\"$(date +%F-%T)\")"
fi #######################################################################################################
# 说明:
# 、此后版本需添加docker 命令的操作记录;
# 、此后版本添加linux系统对docker服务的一些动作,如:启动、重启、停止等等类似的一些操作
#
########################################################################################################

docker命令脚本的更多相关文章

  1. Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)

    最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...

  2. docker安装脚本

    此docker安装脚本为官方提供的,可以从网上下载,此处直接把脚本内容贴上. #!/bin/sh set -e # This script is meant for quick & easy ...

  3. docker命令自动安装

    docker命令自动安装 操作 操作就是执行两句脚本 curl -fsSL get.docker.com -o get-docker.sh 这句命令会在当前文件夹下下载一个get-docker.sh的 ...

  4. docker命令小全 this is my note.

    服务器类型:linux =>centos 7.X以上版本 常用命令使用紫色加粗标明 1.安装yum-util(为配置docker安装时使用阿里镜像做准备):yum install -y yum- ...

  5. Docker笔记7:Docker 命令自动补齐

    经常大家会碰到这种现象,Docker 已经安装好了,但是使用 docker 命令时 不能自动补齐,即输入 docker 命令后,按 Tab 键无法列出子命令(或参数)的候选项. [机制] Linux ...

  6. 设置非root账号不用sudo直接执行docker命令

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. Docker命令学习

    今天更换腾讯云系统的时候发现了多了个CoreOS,据说是专门运行docker的轻量系统,顺便学习一下docker命令. 1. docker version 显示 Docker 版本信息. 2. doc ...

  8. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  9. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

随机推荐

  1. meterpreter 渗透用法

    获取凭证 hashdump模块(post)可以从SAM数据库中导出本地用户账号,credential_collector脚本(post/windows/gather/credentials)也可以从目 ...

  2. Zuul 网关路由

    Zuul 网关路由 路由是微服务架构中不可或缺的一部分,例如:/api/user映射到user服务,/api/shop映射到shop服务. Zuul是一个基于JVM的路由和服务端的负载均衡器.Zuul ...

  3. Linux环境变量具体内容介绍

    在Linux中,环境变量是一个很重要的概念.环境变量可以由系统.用户.Shell以及其他程序来设定. 变量就是一个可以被赋值的字符串,赋值范围包括数字.文本.文件名.设备以及其他类型的数据. 下面的例 ...

  4. Java try和catch的使用介绍

    尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常.这样做有两个好处.第一,它允许你修正错误.第二,它防止程序自动终止.大多数用户对于在程序终止运行和在无论何时 ...

  5. firefox 实现web交互机器人

    现在仅有火狐浏览器可以这样操作 -- Filefox 下面是项目目录 -- 前端页面 -- html <!DOCTYPE html> <html lang="en" ...

  6. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

  7. Python自然语言处理笔记【一】文本分类之监督式分类

    一.分类问题 分类是为了给那些已经给定的输入选择正确的标签. 在基本的分类任务中,每个输入都被认为与其他的输入是隔离的.每个类别的标签集是预先定义好的(只有把类别划分好了,才能给输入划分类别). 分类 ...

  8. List添加map,后添加的map覆盖前面的问题

    List resultList = new ArrayList(); Map map = new HashMap(); while(rs.next()){ String userid = rs.get ...

  9. 4、Kafka命令行操作

    Kafka命令行操作 1)查看当前服务器中的所有topic [test@ip101 kafka]$ bin/kafka-topics.sh --zookeeper ip101:2181 --list ...

  10. 王之泰201771010131《面向对象程序设计(java)》第四周学习总结

    王之泰201771010131<面向对象程序设计(java)>第四周学习总结 第一部分:理论知识学习部分 第四章 1.类与对象的基础概念. a.类(class)是构造对象的模板或蓝图.由类 ...