第一版:

  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. dfs进阶

    当自己以为自己深搜(其实就是暴力啦)小成的时候,发现没有题目的积累还是很难写出程序,自己真的是太年轻了:总结一下就是做此类题看是否需要使用vis数组优化以及继续搜索的条件或者满足答案的条件.以下为2题 ...

  2. PM九步法

    本文转载自网络. 多年以后,当我面对那些年青的产品经理,我会想起自己当年从事的是一份高薪的工作.那是2000年,我大学毕业后在北京一家IT网站做搜索引擎PM,当时我一个月的薪水能在亚运村买一平方米房子 ...

  3. Oracle经典书籍

    Oracle实用教程 深入浅出Oracle

  4. Vue基础进阶 之 实例方法--生命周期

    在上一篇博客中我们知道生命周期的方法: 生命周期: vm.$mount:手动挂载Vue实例: vm.$destroy:销毁Vue实例,清理数据绑定,移除事件监听: vm.$nextTick:将方法中的 ...

  5. CSS 内边距 外边距

    CSS 内边距 外边距 <html> <!-- style="margin: 0 auto" 将网页上方空白边距填满--> <body style=& ...

  6. jsp传Array数组到后台

    jsp页面传递对象数组到后台的需求 JSP: //保存 $("#submitBtn").click(function(){ var flag = true; var eachfla ...

  7. 使用redis做分布式锁

    1.使用setnx命令.先看下官方文档http://redis.cn/commands/setnx.html 2.使用getset命令.先获取,再set 实现案例: * create 2018-12- ...

  8. 解决使用eclipse创建maven web项目时报Could not resolve archetype的问题

    前两天重装了系统,今天想写一个项目的时候出现了点问题. 在使用eclipse创建maven web项目时,点Finish后报了Could not resolve archetype的问题. Could ...

  9. error: 'Can't connect to local MySQL server through socket '/data/3307/data/mysql.sock' (2)'

    centos7.5 重启mysql报错 问题: [root@db01-51 ~]# mysqladmin -uroot -p123 -S /data/3307/data/mysql.sock shut ...

  10. Intellij IDEA的下载安装与破解

    一,下载与安装 1.官网下载:https://www.jetbrains.com/idea/ 2.选择Windows对应版本安装 二,破解 1.下载破解补丁:http://idea.lanyus.co ...