Desarrolle una colección de comandos comunes (Docker, K8s, Linux, Windows, etc.)
1 ventana acoplable
Ver detalles: https://blog.csdn.net/weixin_45565886/article/details/130130361
1.1 Comandos básicos
① Extraer, ver, eliminar imagen
docker pull nginx #下载最新版
镜像名:版本名(标签)
docker pull nginx:1.20.1
docker pull redis #下载最新
docker pull redis:6.2.4
## 下载来的镜像都在本地
docker images #查看所有镜像
redis = redis:latest
docker rmi 镜像名:版本号/镜像id
caso:
# 1. 拉取镜像
docker pull nginx:1.20.1
# 2. 查看本地镜像
docker images
②Ejecutar, ver, detener contenedor
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
【docker run 设置项 镜像名 】 镜像启动运行的命令(镜像里面默认有的,一般不会写)
# -d:后台运行
# --restart=always: 开机自启
docker run --name=mynginx -d --restart=always -p 88:80 nginx
# 查看正在运行的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm 容器id/名字
docker rm -f mynginx #强制删除正在运行中的
#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字
#应用开机自启
docker update 容器id/名字 --restart=always
caso:
# -d 后台启动
# --restart=always 开机自启
# -p 88:80 将宿主机的88端口映射到nginx容器的80端口
# --name=mynginx 指定启动之后的容器名为mynginx
# nginx:1.20.1 启动版本号为1.20.1的nginx
docker run -d --restart=always -p 88:80 --name=mynginx nginx:1.20.1
③En el contenedor
# 进入容器内部修改[有些可能不是bash是sh,需灵活变化]
# -it 表示进入交互页面
#nginx容器可以当做一个小型的linux,然后里面运行了nginx
docker exec -it 容器id /bin/bash
Caso: modificar la página de inicio predeterminada de nginx
docker ps,查看正在运行的nginx镜像,获取容器id
docker exec -it bcb /bin/bash,进入nginx交互页面
进入nginx的首页
cd /usr/share/nginx/html
修改首页内容:
echo "this is ziyi's pages, elcomclear > index.html
查看结果:你的ip+映射端口(宿主机的)
退出交互页面
exit
1.2 Operación avanzada
① Montar los datos del contenedor en el exterior
docker run --name=mynginx \
-d --restart=always \
-p 88:80 -v /data/html:/usr/share/nginx/html:ro \
nginx
# 修改页面只需要去 主机的 /data/html
# -v 挂载
/*
/data/html:/usr/share/nginx/html:ro
将容器中的/usr/share/nginx/html挂载到宿主机的/data/html目录,ro表示read only只读
nginx代表nginx:latest镜像名
*/
especificar la versión de nginx
docker run -d -p 88:80 -v /data/html:/usr/share/nginx/html --restart=always --name=mynginx nginx:1.20.1
② Enviar cambios
Después de modificar el contenido en el contenedor, queremos empaquetarlo y enviarlo a otras computadoras para que lo ejecuten. En este momento, necesitamos enviar la imagen modificada.
- Presentar cambios
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# -a "ziyi" 指明是谁修改的
# -m "首页变化" 指明做了什么
# 341d81f7504f guignginx:v1.0 指明哪个容器的修改了以及新容器的版本号
docker commit -a "ziyi" -m "首页变化" 341d81f7504f guignginx:v1.0
- Comprimir la imagen y transferir
# 将镜像保存成压缩包
docker save -o abc.tar nginx:v1.0
# 可以通过scp命令远程传输到指定服务器的指定文件夹下
# 别的机器加载这个镜像
docker load -i abc.tar
# 离线安装
③Empujar al concentrador remoto
- Regístrese e inicie sesión en su cuenta dockerhub
# 登录docker hub,输入命令然后输入自己用户名与密码
docker login
- Empaquetar la imagen local
# 打包本地镜像
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag nginx:v1.0 ziyigun/nginx:v1.0
Comando integral:
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag guignginx:v1.0 leifengyang/guignginx:v1.0
# 登录到docker hub
docker login
docker logout(推送完成镜像后退出)
# 推送
docker push leifengyang/guignginx:v1.0
# 别的机器下载
docker pull leifengyang/guignginx:v1.0
2 K8
# 查看持续查看workflow的pod日志
kubectl logs workflow-9c6468cb7-f4d6x -n xxx -f --tail=1
# 进入容器内容 -n xxx 指定命名空间
kubectl exec -it -n xxx compression-apk-v1-label-2-66bc688cf4-zgvvr -- sh
# kubectl exec -n ocpf-plugin pod-name -it -- /bin/bash
# -r 支持转义
kubectl logs -n ocpf s3batch-6697bb767f-lr7zx | less -r
# 查询错误,通过/查询包含ERROR
# /ERROR
# 获取xxx命名空间下的deployment【pod、svc同理】
kubectl get deployment -n xxx
# 删除xxx命名空间下名为delpoymentName的deployment【pod、svc同理】
kubectl delete deployment delpoymentName -n xxx
Para obtener más información, consulte: https://blog.csdn.net/weixin_45565886/article/details/130698024
2.1 Comandos básicos
①La implementación está asociada con el Pod de acuerdo con la etiqueta del Pod, que es para administrar el ciclo de vida del pod.②El
servicio está asociado con el Pod de acuerdo con la etiqueta del Pod, para permitir el acceso externo al pod y equilibrar la carga para la vaina.
- Nota:
El Pod asociado con el controlador de implementación, el nombre y el nombre de host del Pod (si no se especifica manualmente) es el nombre del controlador de implementación. El Pod
asociado con el controlador StatefulSet, el Nombre y el nombre de host del Pod (si no se especifica manualmente). ) son el nombre del controlador StatefulSet + número de serie
①Comandos básicos (pod, etc.)
Orden | significado | ejemplo |
---|---|---|
kubectl ejecuta el nombre del contenedor --image=dirección del contenedor: versión | Implemente el contenedor con el comando | kubectl ejecute la aplicación de prueba --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 |
kubectl apply -f xxx.yaml | Implementar a través del archivo de configuración | kubectl apply -f app.yaml |
kubectl describe pod nombre-pod | Ver detalles de la cápsula | Kubectl describe la prueba de pod-k8s-8598bbb8c6-62c8m |
kubectl registra el nombre del pod | Ver registros de pod (-f ver registros continuamente) | Kubectl registra la prueba-k8s-8598bbb8c6-ngmw9 |
kubectl exec -it pod-name – bash | Ingrese el interior del contenedor de la cápsula (el parámetro -c puede especificar qué contenedor ingresar) | kubectl exec -it test-k8s-8598bbb8c6-knztk – bash |
②Despliegue
Archivo de configuración:
aplicación.yml:
apiVersion: apps/v1
# 表示类型为Deployment
kind: Deployment
metadata:
# 部署名字
name: test-k8s
spec:
replicas: 5
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: test-k8s
# 定义 Pod 相关数据
template:
metadata:
labels:
# 标签
app: test-k8s
spec:
# 定义容器,可以多个【这一部分就是上面的单个pod】
containers:
- name: test-k8s # 容器名字【需要与labels对应】
image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像[上传到了腾讯云]
Orden | significado | ejemplo |
---|---|---|
implementación a escala de kubectl nombre de implementación --replicas=xx | Número de copia de implementación especificado | escala kubectl deploymentmnet test-k8s --replicas=5 |
kubectl apply -f xxx.yaml | Modifique el archivo de configuración para volver a implementar | Se pueden modificar parámetros como las réplicas. |
kubectl port-forward pod-name port:containerPort | Asignar puertos externos al interior del contenedor | kubectl port-forward test-k8s-8598bbb8c6-2ff7w 8090:8080 |
Historial de despliegue de kubectl despliegue nombre-despliegue | Revertir una implementación a una versión anterior | Prueba de implementación del historial de implementación de Kubectl-k8s |
despliegue de kubectl deshacer despliegue nombre-despliegue --to-revision=2 | Volver a la versión especificada | implementación de kubectl deshacer implementación test-k8s --to-revision=2 |
kubectl delete deployment nombre-despliegue | eliminar despliegue | kubectl eliminar prueba de implementación-k8s |
③Servicio
Archivo de configuración:
servicio.yaml
apiVersion: v1
kind: Service
metadata:
name: test-k8s
spec:
selector:
app: test-k8s
type: ClusterIP # 默认
ports:
- port: 8080 # 本 Service 的端口
targetPort: 8080 # 容器端口
Archivo de configuración de la aplicación:
# 应用配置
kubectl apply -f service.yaml
Orden | significado | ejemplo |
---|---|---|
kubectl obtener servicio | ver servicio servicio | kubectl obtener svc test-k8s |
kubectl describe el nombre del servicio de svc | Ver detalles del servicio | kubectl describe svc test-k8s |
④Conjunto con estado
StatefulSet se utiliza para administrar aplicaciones con estado, como bases de datos.
Las aplicaciones que implementamos anteriormente no necesitan almacenar datos ni recordar el estado, y las copias se pueden expandir a voluntad, y cada copia es la misma y se puede reemplazar.
- Sin embargo, los objetos con estado, como las bases de datos y Redis, no pueden expandir las copias a voluntad.
- StatefulSet arreglará el nombre de cada Pod, pero la IP del Pod no es fija
mongo.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongodb
spec:
serviceName: mongodb
replicas: 3
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongo
image: mongo:4.4
# IfNotPresent 仅本地没有镜像时才远程拉,Always 永远都是从远程拉,Never 永远只用本地镜像,本地没有则报错
imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
name: mongodb
spec:
selector:
app: mongodb
type: ClusterIP
# HeadLess
clusterIP: None
ports:
- port: 27017
targetPort: 27017
⑤Configmap y secreto
⑥Helm y espacio de nombres
2.2 Comandos avanzados
3 linux
3.1 Crear y compilar código
mkdir myproject
cd myproject
git clone <repository_url>
cd <repository_name>
make
# mkdir myproject:创建一个名为myproject的目录。
# cd myproject:进入myproject目录。
# git clone <repository_url>:从远程仓库克隆代码到当前目录。
# cd <repository_name>:进入克隆的代码仓库目录。
# make:执行Makefile中的编译命令,编译代码。
3.2 Instalar y administrar paquetes dependientes
sudo apt-get update
sudo apt-get install <package_name>
#sudo apt-get update:更新可用的软件包列表。
#sudo apt-get install <package_name>:安装指定的软件包。
3.3 Ejecutar y depurar comandos
./myprogram
gdb myprogram
# ./myprogram:运行名为myprogram的可执行文件。
# gdb myprogram:使用GDB调试器来调试myprogram程序。
3.4 Ver registros y salida
tail -f <log_file>
grep <pattern> <file>
# tail -f <log_file>:实时查看日志文件的最新内容。
# grep <pattern> <file>:在文件中查找匹配指定模式的行。
3.5 Control de versiones y gestión de códigos
git init
git add .
git commit -m "Initial commit"
git push origin master
# git init:初始化一个新的Git仓库。
# git add .:将当前目录下的所有文件添加到Git仓库。
# git commit -m "Initial commit":提交代码更改,并添加提交消息。
# git push origin master:将本地代码推送到远程仓库的master分支。
Otro uso avanzado
# 搜索workflow.log中包含2022的字符,并通过管道符转换到more中
grep "2022" workflow.log | more
4 ventanas
Ver detalles: https://editor.csdn.net/md/?articleId=127912183
5 Otros conceptos de desarrollo
5.1 La diferencia entre la vista previa y la respuesta de las herramientas de desarrollo F12
La diferencia entre vista previa y respuesta.
- avance:
- respuesta:
- El formato mencionado aquí se refiere a la conversión de formato de json, html, css y otros datos transmitidos desde el fondo.
总结
:
①Perview significa (vista previa de respuesta): Response-preview (el contenido del recurso de respuesta que se ha formateado)
②Response significa: (datos de respuesta sin procesar): datos de respuesta originales (el contenido del recurso de respuesta que no se ha formateado)