# find -name(文件名) -user(用户) -group(组) -mtime(修改时间天) -n +n -size(文件大小) -type{文件类型(b d c p l f)} -exec {};
# vnstat -q(插) -i(网卡) -m(月) -d(天) -u 网络流量监控器;
# timeout 指定时间强制关闭 -k -s(超时发送信号)
# ipstat 实习显示linux内核iptables工作状态 \收集并报告有关服务器上 IP 通信流
# cal 显示日历
# declare 定义一个新的环境变量
# set 设置shell的执行方式 可以按照不同需求做设置
# env 显示和定义环境变量 environment
# iostat cpu io监控
# sysctl 运行时配置内核参数
# vmstat 显示虚拟内存状态
# lsof 其功能是用于查看文件的进程信息 list opened files
# ulimit 显示当前的各种用户进程限制
# uptime 显示系统运行的时间
# top -n(显示数) -i 不显示进程
# du -shkmga 查看文件大小
# shutdown -h (时间now) -r(reboot) -c (取消关机程序)
# date “+%y-%d-%m-”
# uname -ari
# grep -Fwvf
# if [ -f 判定文件 -e 判断文件是否存在 -d 怕判断目录 -l 链接 (-rwx 可读写执行) ]
# awk ‘引号中间匹配正则内容’ -F : ‘$3>=500’
# sed -e (后插入) -n (不处理)
# netstat 显示网络状态
# tcpdump 抓包 -i eth0 -vvv -p
# mount 挂载
# yum -y(yes) -q(无输出) -v(详细) remove(删除rpm包) list clean(清缓存) update(更新rpm)
# rpm -qa -ivh(安装 执行过程 列出标记) -evh(卸载) -Uvh(升级) -ql(查询安装路径)
# diff 对比文件
# rcp 远程复制
# alias 设置文件别名 mv=‘mv -i’
# which 查询命令所在路径
iptables
iptables-save 保存防火墙规则
MySQL
官方网站:http://www.mysql.com
http://dev.mysql.com/doc
MySQL5.6源码安装配置选项参考: https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
mysql 安装
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/src/mysql \ #Installation base directory -DMYSQL_DATADIR=/mysql/data \ #Data directory -DDEFAULT_CHARSET=utf8 \ #The default server character set -DEXTRA_CHARSETS=all \ #Which extra character sets to include -DDEFAULT_COLLATION=utf8_general_ci \ #The default server collation -DWITH_SSL=system \ #Type of SSL support -DWITH_EMBEDDED_SERVER=1 \ #Whether to build embedded server -DENABLED_LOCAL_INFILE=1 \ #Whether to enable LOCAL for LOAD DATA INFILE -DWITH_INNOBASE_STORAGE_ENGINE=1 #Compile storage engine xx statically into server make && make install **初始化** # /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mysql/data/ --basedir=/usr/local/mysql **启动服务** \# /usr/local/mysql/bin/mysqld_safe --user=mysql & \# /usr/local/mysql/bin/mysqladmin shutdown
将命令定义成系统命令:
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
# source /etc/profile.d/mysql.sh
命令
# mysql -u用户 -p密码 -h (远程设备ip)
# mysqladmin -u -p create databasename
# mysql -u root -p1 -e “use db2;create table t1(name qwe(1),pass wer(100));insert into t3 set name=‘qwe’,pass=password(‘wer’)” 命令行直接执行
sql命令
>help;
>exit; \q
>use databasename (切换数据库) \u databasename
>show database;
>surce qwe.sql 执行sql脚本 .\ qwe.sql
>system ls; 调用系统命令 ! ls;
>edit \e 类似于vim编辑器 输入完出来直接\e执行方便在不是nivecat上编辑长的命令;
>DROP DATABASE ;删库跑路
>
设置开机启动:(同CENTOS6)
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld #将mysqld添加到chkconfig管理的开机启动中
# chkconfig --list |grep mysqld #查看mysqld在各运行级别中是否开机启动
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
mysqldump
++++++
mysqldump -u -p tablesname -A ALL >/dirname/
docker
Namespace 空间隔离
Cgroup 资源隔离 (如CPU、内存、磁盘IO等)
# docker commit -m "备注“ 容器 镜像名 \打包容器成镜像
# docker images \查看本机镜像
# docker pull \从默认仓拉取镜像
# docker image rm 镜像 \删除镜像
# docker inspect 镜像 \查看镜像详细信息
# docker ps [-a] top stop|start|restart|kill| rm -f logs cp
启动
docker run -itd -h wslz --name centos centos --ip 10.10.10.10
i (容器内的标准输入 (STDIN) 进行交互) t ( 指定一个伪终端或终端) d ( 在后台运行容器,返回容器ID) -h 指定容器的主机名 --name 指定容器名称 --ip 指定容器的IP地址 -p 80 将容器的80端口映射到宿主机的随机端口 -v <宿主目录>:<容器目录> \\将宿主机的指定目录映射到容器的指定目录
连接容器
# docker exec -it centos /bin/bash \ 可用exit命令退出,不影响容器
# docker attach centos \通过attach连接容器,使用exit退出后容器会关闭 若不想退出后停止容器,可通过快捷键ctrl+pq退出
镜像导入导出
导出:
# docker save centos:latest > /bak/docker-centos_latest.bak
导入:
# docker load < /bak/docker-centos_latest.bak
基于容器
导出:
# docker export centos7 > /bak/docker-centos7.bak
导入:
# docker import /bak/centos7.bak centos7 \导入了镜像
docker 仓库
安装仓库(Registry) \# docker run -d -p 5000:5000 -v /docker/images/:/var/lib/registry --name registry --restart=always registry \# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 21415645b319 registry "/entrypoint.sh /etc…" 13 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp registry
Registry为了安全性考虑,默认是需要https证书支持(会有下面紫色字体的错误).
我们可以通过一个简单的办法解决:修改docker启动文件:
/usr/lib/systemd/system/docker.service
# systemctl daemon-reload
# systemctl restart docker
通过 docker tag重命名镜像,使之与registry匹配
# docker tag centos 192.192.192.192:5000/centos7
上传到私有仓库
# docker push 192.192.192.192:5000/centos7
查看私有仓库中的镜像.
# curl 192.192.192.192:5000/v2/_catalog \ALL
{“repositories”:[“centos7”,“nginx”]}
# curl 192.192.192.192:5000/v2/centos7/tags/list #查看镜像的所有版本
{“name”:“centos7”,“tags”:[“latest”,“ipok”]} #删除多余的tag: docker rmi -f 仓库名/镜像名:版本tag
. 从私有仓库中拉取镜像
#docker pull 192.192.192.192:5000/centos7 #仓库/镜像名:版本
Docker Registry WebUI 工具: docker-registry-web
下载 docker-registry-web 镜像
# docker pull hyper/docker-registry-web
启动仓库
# docker run -d -p 5000:5000 -v /docker/images/:/var/lib/registry --name registry --restart=always registry
启动 regisger-web
# docker run -d -p 8080:8080 --name registry-web --link registry \ # --link 仓库名称, 连接到哪个仓库
-e REGISTRY_URL=http://192.192.192.192:5000/v2 \ # 仓库 url
-e REGISTRY_NAME=192.192.192.192:5000 hyper/docker-registry-web
企业级Harbor
- 访问web界面
docker网络
docker network ls NETWORK ID NAME DRIVER SCOPE 88888888888 bridge bridge local 默认 创建网桥docker0 每开启一个容器,会按照顺序分配对应的IP地址 88888888888 host host local 88888888888 none null local container
docker监控docker run -d -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys/:/sys/:ro \
使用浏览器访问8080端口,可以看到CAdvisor的界面。-v /var/lib/docker/:/var/lib/docker/:ro -p 8080:8080 --name cadvisor google/cadvisor
你将看到CPU的使用率、内存使用率、网络吞吐量以及磁盘空间利用率。
Docker加速
方法1: 修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值并重启docker.
#vim cat /etc/docker/daemon.json
{
“registry-mirrors”: [“https://pf5f57i3.mirror.aliyuncs.com”]
}
#systemctl daemon-reload
systemctl restart docker
PS. 可以登录阿里云控制台, 搜索容器镜像服务, 来获取自己的镜像加速地址
方法2: 修改docker服务的启动命令:在启动时传入"–registry-mirror=xxx"参数实现
#vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --registry-mirror=https://pf5f57i3.mirror.aliyuncs.com
systemctl daemon-reload
systemctl restart docker
++++++
dockerfile
docker build -t image-name-tag [-f dockerfile-name] context-dir
FROM: 指定基础镜像
MAINTAINER: 设置该镜像的作者。
语法: MAINTAINER
RUN 在shell或者exec的环境下执行的命令。每一个 RUN 的行为都会新建立一层
COPY: 复制文件 <宿主机的文件> 复制到 <容器中>
语法:
COPY <源路径>… <目标路径>
COPY [“<源路径1>”,… “<目标路径>”]
ADD: 复制文件指令。它有两个参数和。
语法: ADD
CMD: 容器启动时调用的命令
语法:
CMD command arg1 arg2 #执行shell内部命令 sh -c
CMD [“executable”,“arg1”,“arg2”] #执行可执行文件,优先
CMD [“arg1”,“arg2”] #设置了ENTRYPOINT,则直接调用ENTRYPOINT
EXPOSE:声明端口
语法: EXPOSE port1 [port2]
ENV:设置环境变量
语法:
ENV
ENV = [= …]
VOLUME:挂载匿名卷
语法:
VOLUME
VOLUME [“dir1”,“dir2”]
WORKDIR: CMD命令运行的工作目录
语法: WORKDIR
USER: 用于设定容器的运行用户名或UID
语法: USER user/uid
HEALTHCHECK:健康检查
语法:
HEALTHCHECK [选项] CMD <命令> :设置检查容器健康状况的命令
HEALTHCHECK NONE :如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
k8s
# kubectl help
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
常用命令
Nodes 节点
$ kubectl get no
$ kubectl get no -o wide
$ kubectl describe no
$ kubectl get no -o yaml
$ kubectl get node --selector=[label_name]
$ kubectl get nodes -o jsonpath=’ {.items[*].status.addresses [?(@.type==“ExternalIP”)].address}’
$ kubectl top node [node_name]
Pods 调度
$ kubectl get po -o wide
$ kubectl describe po
$ kubectl get po
$ kubectl get po --show-labels
$ kubectl get po -l app=nginx
$ kubectl get po -o yaml
$ kubectl get pod [pod_name] - o yaml --export
$ kubect l get pod [ pod_name] - o yaml --export > nameoffile.yaml
$ kubectl get pods – field-selector status.phase=Running
Namespaces 命名空间
$ kubectl get ns
$ kubectl get ns - o yaml
$ kubectl describe ns
Deployments
$ kubectl get deploy
$ kubectl describe deploy
$ kubectl get deploy - o wide
$ kubectl get deploy - o yaml
Services
$ kubectl get svc
$ kubectl describe svc
$ kubectl get svc - o wide
$ kubectl get svc - o yaml
$ kubectl get svc --show-labels
DaemonSets
$ kubectl get ds
$ kubectl get ds --all-namespaces
$ kubectl describe ds [daemonset_name] - n [namespce_name]
$ kubectl get ds [ds_name] -n [ns_name] -o yaml
Events
$ kubectl get events
$ kubectl get events -n kube-system
$ kubectl get events -w
logs
$ kubectl logs [pod_name]
$ kubectl logs --since=1h [pod_name]
$ kubectl logs --tail =20 [pod_name]
$ kubectl logs -f -c [container_name] [pod_name]
$ kubectl logs [pod_name] > pod.log
Service Accounts
$ kubectl get sa
$ kubectl get sa -o yaml
$ kubectl get serviceaccounts default -o yaml >./sa.yaml
$ kubectl replace serviceaccount default -f ./sa.yaml
ReplicaSets
$ kubectl get rs
$ kubectl describe rs
$ kubectl get rs -o wide
$ kubectl get rs -o yaml
Roles
$ kubectl get roles --all -namespaces
$ kubectl get roles --all -namespaces -o yaml
Secrets
$ kubectl get secrets
$ kubectl get secrets --all -namespaces
$ kubectl get secrets -o yaml
ConfigMaps
$ kubectl get cm
$ kubectl get cm --all-namespaces
$ kubectl get cm --all-namespaces -o yaml
Ingress
$ kubectl get ing
$ kubectl get ing --all-namespaces
PersistentVolume
$ kubectl get pv
$ kubectl describe pv
PersistentVolumeClaim
$ kubectl get pvc
$ kubectl describe pvc
StorageClass
$ kubectl get sc
$ kubectl get sc -o yaml
Multiple Resources
$ kubectl get svc,po
$ kubectl get deploy,no
$ kubectl get all
$ kubectl get all --all -namespaces
Changing Resource Attributes //改变资源属性
Taint
$ kubectl taint [node_name] [taint_name]
Labels
$ kubectl label [node_name] disktype=ssd
$ kubectl label [pod_name] env=prod
Cordon/Uncordon
$ kubectl cordon [node_name]
$ kunectl uncordon [node_name]
Drain
$ kubectl drain [node_name]
Nodes/Pods
$ kubectl delet enode [node_name]
$ kubectl delet epod [pod_name]
$ kubectl edit node [node_name]
$ kubectl edit pod [pod_name]
Deployments/Namespaces
$ kubectl edit deploy [deploy_name]
$ kubectl delete deploy [deploy_name]
$ kubectl expse deploy [deploy_name] --por=80 -type=NodePort
$ kubectl scale deploy [deploy_name] --repicas=5
$ kubectl delete ns
$ kubectl edit ns [ns_name]
Services
$ kubectl edit svc [svc_name]
$ kubectl delete svc [svc_name]
DaemonSets
$ kubectl edit ds [ds_name] -n kube-system
$ kubectl delete ds [ds_name]
Service Accounts
$ kubectl edit sa [sa_name]
$ kubectl delete sa [sa_name]
Annotate
$ kubectl annotate po [pod_name] [annotation]
$ kubectl annotate no [node_name]
Adding Resources //添加资源
Creating a Pod
$ kubectl create -f [name_of_file]
$ kubectl apply -f [name_of_file]
$ kubectl run [pod_name] --image=nginx --resart=Never
$ kubectl run [pod_name] --geneator=run-pod/v1 --image=nginx
$ kubectl run [pod_name] --image=nginx --restart=Never
Creating a Service
$ kubectl create svc nodeport [svc_name] --tcp=8080: 80
Creating a Deployment
$ kubectl create -f [name_of_file]
$ kubectl apply -f [name_of_file]
$ kubectl create deploy [deploy_name] --image=ngi nx
Interactive Pod
$ kubectl run [pod_name] --image=busybox --rm -it --restart=Never – sh
Output YAML to a File
$ kubectl create deploy [deploy_name] --image=nginx --dry-run -o yaml > depl oy. yaml
$ kubectl get po [pod_name] -o yaml --export > pod. yaml
Getting Help
$ kubectl -h
$ kubectl create -h
$ kubectl run -h
$ kubectl explain deploy.spec
Requests //请求
API Call
$ kubectl get --raw /apis/metrics.k8s.io/
Cluster Info
$ kubectl config
$ kubectl cluster-info
$ kubectl get componentstatuses
kubectl -n kube-system edit cm coredns
+++++