利用脚本快速执行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
利用脚本快速执行Dockerfile以及docker镜像的启停与删除的更多相关文章
- Docker、Dockerfile、Docker镜像、容器这些都是什么鸟?
老生常谈,再再再……普及一下: Docker:最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker. Dockerfile: ...
- dockerfile封装docker镜像
一.使用都dockerfile封装docker镜像 1.在任意一个地方创建文件夹docker mkdir docker 2.进入文件夹并且下载一个django2.1.7的包以及一个epel.repo ...
- DOCKER学习_011:使用Dockerfile制作docker镜像
前面使用commit的方式,制作一个docker镜像,本次介绍使用Dockerfile制作一个dockers镜像 [root@docker-server3 ~]# mkdir /openssh [ro ...
- 基于Dockerfile创建docker镜像
0.先创建一个文件夹img mkdir img 1.Linux上新建3个文件 2.文件内容分别写入 (1)Dockerfile中 # 基于的基础镜像centos FROM centos # 维护该镜像 ...
- 利用脚本一键执行脚本,创建SharePoint文档库列表
SharePoint基于文档库和列表上进行二次开发,生成新的文档库和新的列表模板 通过新的模板,创建新的文档库与列表 --定义site对象$site = SPSite http://dvt176/si ...
- 利用ROWID快速执行关联更新
一.构造相关表P1,P2 create table p1(id int,name char(10)); create table p2(id int,name char(10)); 二.批量插入数据 ...
- 快速获取批量处理Docker镜像SQL语句
.获取批量pull语句 select concat('docker pull develop-harbor.geostar.com.cn/', t.name, ':', t1.tag) name fr ...
- Docker:dockerfile自动构建镜像 [六]
一.手动docker镜像的缺点 相对于手动制作的docker镜像,使用dockerfile构建的镜像有以下优点: 1.dockerfile只有几kb,便于传输 2.使用dockerfile构建出来的镜 ...
- 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少了解一些.前段时间研究OpenShift(paas的一种),发现了另外一种构建Docker镜像的方式:S2I ...
随机推荐
- ES6常用知识点
一.变量 var:定义的变量有时候会成为全局变量 let:定义的变量严格,只在代码块内有效 const:声明的变量是常量,不能被修改 二.数据类型 字符串 @定义:~字符串定义标记,支持换行. #常 ...
- SYCOJ2100摆动序列
题目-摆动序列 (shiyancang.cn) 直接分成两部分,插入即可.只有一个地方不对,那就是符号.两个大的放一个小的,两个小的放一个大的.那么每次的大的放最大的,每次的小的放其次小的,用完就不用 ...
- 403 Invalid CORS request 跨域问题 invalid+cors+request什么意思
5.跨域问题 跨域:浏览器对于javascript的同源策略的限制 . 以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 ...
- Sentry 开发者贡献指南 - Feature Flag
功能 flag 在 Sentry 的代码库中声明. 对于自托管用户,这些标志然后通过 sentry.conf.py 进行配置. 对于 Sentry 的 SaaS 部署,Flagr 用于在生产中配置标志 ...
- Springboot+Druid 动态数据源配置监控
一.引入maven依赖,使用 starter 与原生 druid 依赖配置有所不同 <dependency> <groupId>com.alibaba</groupId& ...
- 云计算实验二 Docker实验-mysql、tomcat、sqlserver、redis、oracle、mongo安装
mysql安装 下载镜像 docker pull mysql 查看镜像 docker images|grep mysql 创建启动容器 docker run --name mysqlserver -v ...
- 为什么JavaWeb要分层
首先bai让我们坐着时光机回到n年前的web开发.那个时候最早du都是静态的html页面,zhi后来有了数据库,有了所谓dao的动态页面,然后程序猿在编码的时候,会把所有的代码都写在页面上,包括数据库 ...
- 🏆【Alibaba中间件技术系列】「Nacos技术专题」服务注册与发现相关的原理分析
背景介绍 前几篇文章介绍了Nacos配置中心服务的能力机制,接下来,我们来介绍Nacos另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常 ...
- gorm连接mysql的初始化配置
包含mysql配置.gorm配置.连接池配置.log日志配置 init_db_log.go文件代码 package main import ( "fmt" "gorm.i ...
- python类和函数
#/usr/bin/python #coding=utf-8 class Car(): def __init__(self,name,year): self.name = name self.year ...