使用littleTools简化docker/kubectl的命令
littleTools
littleTools是我根据日常运维时编写的一个小工具,开源在了https://github.com/xuxinkun/littleTools上。
littleTools包含一组简短命令,主要用于简化某些命令的输入。目前littleTools有docker-tools和kube-tools两部分,主要用于简化命令docker和kubectl的输入。例如,如果要进入容器,一般需要输入命令docker exec -it xxx bash来完成。但是使用littleTools,只需使用dt-exec xxx就可以实现它。
开发思路
littleTools主要是为简化命令而做,因此直接采用了最简便直接的shell函数进行编写,因此tab键可以帮助用户自动完成命令。
比如想要实现dt-exec {containerid},则只需要获取参数,填充到docker exec -it {containerid} bash的命令中即可。二者效果完全一致。
function dt-exec()
{
docker exec -it $1 bash
}
在函数的命名上采用了以下几种方式:
- dt/kt-verb: 执行某个动作
- dt/kt-verb-resource: 显示resource的相关信息
- dt/kt-verb-resourceA-by-resourceB: 根据resourceB获取resourceA
命令一览表
docker-tools
主要用以简化docker的相关命令。
| 命令 | 参数 | 描述 |
|---|---|---|
| dt-exec | {containerid} | 用bash执行到容器中。 |
| dt-exec-sh | {containerid} | 用sh执行到容器中。 |
| dt-show-pid | {containerid} | 显示容器的0号进程在主机上的pid。 |
| dt-show-pid-all | {containerid} | 显示容器的所有进程的pids。 |
| dt-show-flavor | {containerid} | 显示容器的cpu / memory等资源信息。 |
| dt-show-flavor-all | 没有 | 显示所有容器的cpu / memory之类的资源信息。 |
| dt-show-volume | {containerid} | 显示容器绑定的在主机上的存储路径。 |
| dt-show-volume-all | {containerid} | 显示容器绑定的在主机上的存储路径以及在容器中绑定的路径。 |
| dt-lookup-by-pid | {pid} | 根据主机上的{pid}查找包含该进程的容器。 |
| dt-lookup-by-volume | {volume path} | 根据主机上的{volume path}的路径查找绑定该路径的容器。 |
这里特别要说明的是dt-lookup-by-pid命令,可以执行根据主机上的某个进程pid号查找对应容器的功能,这个在实际运维中非常实用。
其工作原理是利用了容器中所有进程会使用相同的cgroup path。通过查看该进程的cgroup信息。而后遍历容器的cgroup信息,并进行比对,如果一致,说明该进程属于该容器。
kube-tools
主要用以简化kubectl的相关命令。
| 命令 | 参数 | 描述 |
|---|---|---|
| kt-exec | {pod name}或{namespace} {pod name} | 用bash执行进入pod。 |
| kt-exec-sh | {pod name}或{namespace} {pod name} | 用sh执行进入pod。 |
| kt-get-node | {node name} | 描述节点。 |
| kt-get-node-ready | 没有 | 列出所有ready节点。 |
| kt-get-node-notready | 没有 | 列出所有notready的节点。 |
| kt-get-node-all | 没有 | 列出所有节点。 |
| kt-get-pod | {pod name}或{namespace} {pod name} | 描述pod。 |
| kt-get-pod-node | {pod name}或{namespace} {pod name} | 使用pod获取pod和节点信息。 |
| kt-get-pod-all | 没有 | 获取所有命名空间的所有pod。 |
| kt-get-pod-by-ns | {namespace} | 获取命名空间中的所有pod。 |
| kt-get-pod-by-rs | {rs name}或{namespace} {rs name} | 获取rs的所有pod。 |
| kt-get-pod-by-deploy | {deploy name}或{namespace} {deploy name} | 获取deploy的所有pod。 |
| kt-get-pod-by-svc | {svc name}或{namespace} {svc name} | 获取svc的所有pod。 |
样例这里就不重复列举了,可以参考项目的examples.md。
使用littleTools简化docker/kubectl的命令的更多相关文章
- Docker Kubernetes 常用命令
Docker Kubernetes 常用命令 增 # 通过文件名或标准输入创建资源. kubectl create # 读取指定文件内容,进行创建.(配置文件可指定json,yaml文件). kube ...
- Kubernetes之kubectl常用命令
最近项目有用到Kubernetes作集群配置,所以学习下相关命令,记录下以备下次使用... kubectl help 显示具体的用法 kubectl controls the Kubernetes c ...
- kubectl 日常命令 备忘
目录 kubectl 常用命令 自动补全 Kubectl命令概览 常用命令分类 常用命令 声明式资源对象管理 查看资源状态 容器管理 集群管理 常用命令英文缩写 kubectl 常用命令 自动补全 使 ...
- Kubernetes,kubectl常用命令详解
kubectl概述 祭出一张图,转载至 kubernetes-handbook/kubectl命令概述 ,可以对命令族有个整体的概念. 环境准备 允许master节点部署pod,使用命令如下: kub ...
- Docker 安装及命令
CentOS 安装 通过脚本安装:curl -sSL https://get.docker.com/ | sh通过yum安装:yum install docker-engine============ ...
- docker常用术语命令
镜像(Image) vs Dockerfile 这组概念很少会让人产生疑惑,但是这两者的区别非常重要.Docker在镜像(image)中运行你的代码,而不是Dockerfile.Dockerfile是 ...
- docker专题(2):docker常用管理命令(上)
http://segmentfault.com/a/1190000000751601 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备 ...
- docker学习-常用命令2
三.容器管理命令3.1 Docker commit 命令,从容器创建一个新的镜像.OPTIONS说明: -a :提交的镜像作者: -c :使用Dockerfile指令来创建镜像: -m :提交时的说明 ...
- docker学习-常用命令1
一.容器管理 1.1 Docker start/stop/restart/rm 命令实例:启动|停止|重启|删除 容器mydb01# docker start|stop|restart|rm mydb ...
随机推荐
- Gym 101908C - Pizza Cutter - [树状数组]
题目链接:https://codeforces.com/gym/101908/problem/C 题意: 一块正方形披萨,有 $H$ 刀是横切的,$V$ 刀是竖切的,不存在大于等于三条直线交于一点.求 ...
- java第二次作业之一
package dama; public class person { private String name; private String sex; private int age; privat ...
- docker制作tomcat镜像
准备cestos镜像.tomcat.jdk cestos是docker pull下来的 在/opt/下创建docker:mkdir -p /opt/docker 把tomcat和jdk解压到docke ...
- 如何修改运行中的docker容器的端口映射和挂载目录
在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设 ...
- [Javascript]网页链接加上时间戳防止串用户
最近客服来报,一批用户访问公司网站的时候,由于其网络环境有代理服务器,导致A用户看到B用户的信息,这是非常尴尬的事情.解决的方法也很容易,给网址加上时间戳就可以了,用JS就能实现. JS代码如下 // ...
- log4j日志输出框架
什么是log4j框架呢? log4j是一个日志输出框架,用于输出日志的.比如MyBatis的日志就是通过log4j输出的,主流框架都是log4j输出的,Spring框架 也可以通过log4j输出日志! ...
- ESP8266开发笔记
自1999年MIT的Kevin Ash-ton教授首次提出物联网(IoT)的概念至今已经有20年了.放眼现在国内外的物联网市场,真可谓是百家争鸣,方兴未艾,无数家软硬件公司在这里舞浪弄潮,逐鹿其中,上 ...
- How to use draggable attribute?怎样使用拖拽属性代码分享
6.7 Drag and dropSupport: dragndropChrome for Android NoneChrome 4+iOS Safari 11.0+UC Browser for An ...
- 关于MapReduce二次排序的一点解答
上一篇博客说明了怎么自定义Key,而且用了二次排序的例子来做测试,但没有详细的说明二次排序,这一篇说详细的说明二次排序,为了说明曾经一个思想的误区,特地做了一个3个字段的二次排序来说明.后面称其为“三 ...
- 深入理解javascript原型和闭包(转)
深入理解javascript原型和闭包(完结) 说明: 该教程绕开了javascript的一些基本的语法知识,直接讲解javascript中最难理解的两个部分,也是和其他主流面向对象语言区别最大的 ...