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命令.之前的第二篇文章 ...
随机推荐
- Exercise about Shape
#include <iostream> using namespace std; class point { int x; int y; public : point () { x=y=; ...
- 安装caffe-ssd或者caffe时make all,make pycaffe,make test运行慢的问题
之所有运行慢,是因为没有在这三条语句后面加上 -j,即没用全部的进程运行,不加-j 表示用单一进程运行,加上-j5表示用5个进程,-j不带数字表示用所有进程
- 牛客网 查找第K小数
题目链接:https://www.nowcoder.com/practice/204dfa6fcbc8478f993d23f693189ffd?tpId=40&tqId=21522&t ...
- JavaScript Dom0 Dom1
行为 样式 结构相分离的页面 JS CSS HTML DOM 0写法 <!DOCTYPE html> <html lang="en"&g ...
- Dockerfile构建容器---构建本地tomcat
前序 这是我第一次摸索.做个笔记记录一下. 首先准备好tomcat与jdk解压到与Dockerfile同级的目录下, 构建文件命名必须为Dockerfile, 为什么同级, 因为build的时候会默认 ...
- [C++ Primer Plus] 第3章、处理数据(二)课后习题
1 . 编写一个小程序,要求用户使用一个整数输出自己的身高(单位为厘米),然后将身高转换为米和厘米.该程序使用下划线字符来指示输入位置.另外,使用一个 const 符号常量来表示转换因子. #incl ...
- SQLServer “无法对数据库'XX' 执行删除,因为它正用于复制”的解决方法
修改数据库某个字段的长度时出现: “无法修改表.无法对 表'dbo.N_Client_content' 执行 删除,因为它正用于复制.” 不能直接对该数据库进行操作,通过alter 的办法来修改,问题 ...
- centos6.5下安装Redis
已有redis-3.2.1.tar.gz文件 拖到centos系统的桌面 现在在桌面目录下 tar -zxv -f redis-3.2.1.tar.gz以解压压缩包 cd redis-3.2.1以切换 ...
- 【Entity Framework】Revert the database to specified migration.
本文涉及的相关问题,如果你的问题或需求有与下面所述相似之处,请阅读本文 [Entity Framework] Revert the database to specified migration. [ ...
- Learning-Python【1】:交互式环境与变量的使用
一.执行Python程序的两种方式 1. 交互式环境,打开cmd,输入python2或python3,显示提示符 “>>>”. 特点:输出代码立即执行 优点:调试程序方便 缺点:无法 ...