利用脚本快速执行Dockerfile以及docker镜像的启停与删除

`关于脚本:`
'sh setup.sh build'    # 将Dockerfile创建成镜像
'sh setup.sh run'      # 启动build创建好的镜像,放到后台运行
'sh setup.sh exec'     # 进入启动好的容器
'sh setup.sh delete'   # 删除容器和镜像

`脚本内的变量:`
1、dockername: # 容器的名称,在run一个镜像的时候,用到了--name的参数,删容器的时候,也会引用到这个变量,包括进入容器(毕竟--name指定的唯一性更好)
2、rminame:    # 镜像的名称,build Dockerfile的时候,-t参数引用了这个变量
3、networkMode: # dock的网络模式 
4、susedocker: # 通过docker ps查看,利用grep去过滤dockername,再用awk切出容器id,进行容器的删除
5、susermi:    # 通过docker images,利用grep去过滤rminame,再用awk切出镜像id,进行镜像的删除
# 因为当时想在suse里面测试一些东西,所以就写了susedocker和susermi,如果有修改,记得全局修改,否则会报错,找不到变量

`建议:`
'这个脚本只是当时为了测试一些服务,因为docker清理环境会方便一点,但是不想过多的花时间,去频繁的通过docker命令来删除和创建docker,有的时候Dockerfile没写好,又要去频繁build,甚至要想tag写什么,为了省事,就写了这个脚本,这样就只需要专注于Dockerfile里面的内容。所以,这个脚本的健壮性不高,不建议用在生产环境!!'
#!/bin/env bash
set -e
dockername=susetest
rminame=opensuse-test
networkMode=none
susermi=$(docker images | grep $rminame | awk '{print $3}')
susedocker=$(docker ps -a | grep $dockername | awk '{print $NF}')

dockerBuild(){
docker build -t $rminame .
}

dockerRun(){
docker run -itd --name $dockername --network $networkMode $rminame
}

dockerExec(){
docker exec -it $dockername /bin/bash
}

dockerRm(){
docker rm -f $susedocker
}

dockerRmi(){
docker rmi -f $susermi
}

case $1 in
'build')
    dockerBuild
    ;;
'run')
    dockerRun
    ;;
'exec')
    dockerExec
    ;;
'delete')
    dockerRm
    dockerRmi
    ;;
'*')
    echo "please input (build|run|exec|delete)"
    exit 2
    ;;
esac
posted @ 2020-11-17 22:13  月巴左耳东  阅读(64)  评论(0)    收藏  举报