docker命令脚本
第一版: 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命令脚本的更多相关文章
- Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)
最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...
- docker安装脚本
此docker安装脚本为官方提供的,可以从网上下载,此处直接把脚本内容贴上. #!/bin/sh set -e # This script is meant for quick & easy ...
- docker命令自动安装
docker命令自动安装 操作 操作就是执行两句脚本 curl -fsSL get.docker.com -o get-docker.sh 这句命令会在当前文件夹下下载一个get-docker.sh的 ...
- docker命令小全 this is my note.
服务器类型:linux =>centos 7.X以上版本 常用命令使用紫色加粗标明 1.安装yum-util(为配置docker安装时使用阿里镜像做准备):yum install -y yum- ...
- Docker笔记7:Docker 命令自动补齐
经常大家会碰到这种现象,Docker 已经安装好了,但是使用 docker 命令时 不能自动补齐,即输入 docker 命令后,按 Tab 键无法列出子命令(或参数)的候选项. [机制] Linux ...
- 设置非root账号不用sudo直接执行docker命令
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Docker命令学习
今天更换腾讯云系统的时候发现了多了个CoreOS,据说是专门运行docker的轻量系统,顺便学习一下docker命令. 1. docker version 显示 Docker 版本信息. 2. doc ...
- Docker命令详解
Docker命令详解 最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...
- Docker入门教程(六)另外的15个Docker命令
Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...
随机推荐
- JaCoCo在Tomcat服务器上监控代码覆盖率的使用方法
简介 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序.很多第三方的工具提 ...
- Android -- 从源码带你从EventBus2.0飚到EventBus3.0
1,最近看了不少的面试题,不管是百度.网易.阿里的面试题,都会问到EventBus源码和RxJava源码,而自己只是在项目中使用过,却没有去用心的了解它底层是怎么实现的,所以今天就和大家一起来学习学习 ...
- Oracle表空间迁移Move Tablespace
move一个表到另外一个表空间时,索引不会跟着一起move,而且会失效.(LOB类型例外) move分为: *普通表move *分区表move *LONG,LOB大字段类型move来进行测试和说明. ...
- 【Bcftools】合并不同sample的vcf文件,通过bcftools
通过GATK calling出来的SNP如果使用UnifiedGenotype获得的SNP文件是分sample的,但是如果使用vcftools或者ANGSD则需要Vcf文件是multi-sample的 ...
- Java笔记 #05# Java Native Interface
参考资料:http://www.ntu.edu.sg/home/ehchua/programming/java/javanativeinterface.html(很详细) 看jdk源代码时,经常会看到 ...
- 1-趣味解读DNS工作原理——转载疯猫网络科技
因为只要我们输入百度.腾讯.淘宝的名字,无论它们的服务器在哪里,历经多少轮查询,我们都能找到并访问之.这就是计算机网络中著名的域名系统DNS(Domain Name System),它能实现把一个网站 ...
- poj2142 The Balance
poj2142 The Balance exgcd 应分为2种情况分类讨论 显然我们可以列出方程 ax-by=±d 当方程右侧为-d时,可得 by-ax=d 于是我们就得到了2个方程: ax-by=d ...
- Linux 高级文件管理
1.标准输出(ls -l /dev/stdin 0 ),标准输入(ls -l /dev/stdout 1 ),错误输出(ls -l /dev/stderr 2 ). 2.ls /etc/passwd ...
- Python爬虫(四)——开封市58同城数据模型训练与检测
前文参考: Python爬虫(一)——开封市58同城租房信息 Python爬虫(二)——对开封市58同城出租房数据进行分析 Python爬虫(三)——对豆瓣图书各模块评论数与评分图形化分析 数据的构建 ...
- css的再深入6(更新中···)
background-position 雪碧图 我们的html和css中有三个属性可以向服务器发送请求,src href url. overflow (1) 值hidden 超出就隐藏 (2) 值s ...