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命令.之前的第二篇文章 ...
随机推荐
- to_date
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; 会话已更改. SQL> SELECT TO_DATE(' ...
- Rocketmq源码导入eclipse时报错的解决方法
1,Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-help-plugi ...
- centos7.5 修改网卡名称
1.修改网卡配置文件中名称信息 vim /etc/sysconfig/network-scripts/ifcfg-ens33 将其中的名称为ens33的改为eth0 ,并将uuid删除以便后面克隆 2 ...
- ubuntu apache 配置虚拟主机 与 二级域名
一.ubuntu 配置虚拟主机 方法一:添加端口号 第一步进入 /etc/apache2/sites-available/ 目录,将 000-default.conf 复制一份到当前目录下并重命名,然 ...
- Spring Boot IoC 容器初始化过程
1. 加载 ApplicationContextInializer & ApplicationListener 2. 初始化环境 ConfigurableEnvironment & 加 ...
- Python取整及保留小数小结
1.int() 向下取整 内置函数 n = 3.75 print(int(n))>>> 3 n = 3.25 print(int(n))>>> 3 2.round ...
- jquery easyui datagrid 将值作为img显示图片时报404 undefined
原因:datagrid 在请求到数据先进行头部数据和样式的渲染,之后数据 obj = {} value = undefined index = 0 进行一次渲染, 在没有formater情况将数据 ...
- Bootstrap3基础 warning/active... 表格的状态类(不同的背景色)
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- POJ 2774 Long Long Message (二分 + Hash 求最长公共子串)题解
题意:求最长公共子串 思路:把两个串Hash,然后我们把短的作为LCS的最大可能值,然后二分长度,每次判断这样二分可不可以.判断时,先拿出第一个母串所有len长的子串,排序,然后枚举第二个母串len长 ...
- Character Encoding in .NET
https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding#Encodings Characters ...