服务器使用笔记(一):bash 脚本快速批量开启指定 docker 容器

我所在的实验室有 4 台 GPU 服务器,为了让大家方便使用,实验室给每个同学都分配了一个 docker 账号,当然,不是所有的 docker 都会被开启服务,因为资源有限,必须要限制大家对资源的使用。所以实验室决定让大家每周填表申请使用服务器,填了申请的,就把相应的 docker 打开。这样一个差事最后落在了我的头上…手动一个一个分配的状态持续了一年,今天我才知道是可以直接写个脚本帮助我加快这一操作的…

一、批量关闭指定 docker 容器

1 #!/bin/bash                                                                                                                                                                             
2 echo "please enter the port you want to stop?(eg: my-test3|my-test4)"
3 read stop_port
4 docker stop $(docker ps -a | grep -E $stop_port |awk '{print $1}')

代码解释
| 指的是管道操作,用于连接每一条指令,前一条命令的输出结果流入后面一条命令,值得注意的是管道命令只能处理前一条指令的正确输出,不能处理错误输出。
docker stop 关闭容器;
docker ps -a 把所有的 docker 都显示出来;
grep -E $stop_port 查找 stop_port 里面的字符串
awk '{print $1} 返回第一个字段。
以上意思连接起来是:直接批量输入容器名放入到 stop_port 变量中,然后利用 grep -E 可以查找多个关键词的功能(多个关键字的连接符是"|")去找到想要关闭的容器是哪些,使用awk '{print $1}'去返回第一个字段,也就是CONTAINER ID,然后使用 docker stop 命令进行关闭返回的容器号。

操作过程如下:
在这里插入图片描述

二、批量开启指定 docker 容器

1 #!/bin/bash                                                                                                                                                                                
2 echo "please input port num you want to start(eg:my-test3|my-test4)"
3 read port_start_list
4 for var in $(docker start $(docker ps -a | grep -E $port_start_list | awk '{print $1}'))
5 do docker attach $(docker ps -a | grep $var | awk '{print $1}')
6 echo -------------------------ok------------------the $var docker is start already-------------------------------------
7 done

代码解释
直接批量输入容器名放入到 port_start_list 变量中,然后利用 grep 可以查找多个关键词的功能去找到我想要开启的容器是哪些,使用 awk '{print $1}' 去返回第一个字段,也就是CONTAINER ID。

操作过程如下:
在这里插入图片描述


三、注意事项

1、.sh文件写好后,需要修改文件的权限才能执行,修改文件权限命令为 chmod u+x youfilename.sh,查看脚本权限的命令为 ls -l youfilename.sh
2、这里的 my-test3 和 my-test4 是我的两个容器名,我用 | 连接我的两个容器名,因为 grep -E 的多关键字查找的语法就是这样的;
3、不要把行号12345复制进去了,会报错的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值