当前位置:   article > 正文

docker k8s 命令总结_ks8拉取镜像命令

ks8拉取镜像命令

学习文档

云原生实战笔记

 欢迎关注 迪答数据 公众号 ,更多技术、数据学习资源点击链接扫码关注!!!

数据分析从入门到进阶的必看书单!文末附所有200本书籍的PDF下载https://mp.weixin.qq.com/s?__biz=Mzk0NDEwNTE4OQ==&mid=2247485504&idx=3&sn=883a57602a9051079b34752a75d7d027&chksm=c328fbcaf45f72dc293ef3d47e8dd4b7ffc7c0fde70ccf5404f5b0d629d78cab43c52d631069&token=118918614&lang=zh_CN#rd

一 、 docker 常用基础命令

1.进入容器内部的系统,修改容器内容

docker exec -it 容器id /bin/bash

2.提交修改好的镜像

  1. //提交镜像修改
  2. docker commit -a "用户名" -m "提交注释" -m 容器id

3. 查看当前的镜像

docker images

4.将镜像保存为压缩包 可以供其他机器加载

  1. docker save -o abc.tar didamysql:v1.0
  2. //在别的机器加载
  3. docker load -i abc.tar

5.推送远程仓库

  1. docker tag 本地镜像:v1.0 远程仓库名:镜像名:v1.2 //类似于将本地镜像名改为远程指定名字,因为需要带有远程仓库的类似于用户标识,才能被远程镜像仓库识别
  2. docker login 登录远程仓库
  3. docker logout (推送完成后退出)
  4. docker push 远程仓库名:镜像名:v1.2(也就是新改的名字)

6.拉取镜像 到本地

  1. docker pull 远程仓库认证路径:镜像名:v1.2
  2. docker pull dida/my-repo:mysql:v1.2

7.运行镜像 

docker run -d(后台运行) -p80:80(端口映射,端口暴露,机器的端口映射到容器端口) 镜像名:版本号
  1. #es docker启动步骤
  2. # 创建数据目录
  3. mkdir -p /mydata/es-01 && chmod 777 -R /mydata/es-01
  4. # 容器启动
  5. docker run --restart=always -d -p 9200:9200 -p 9300:9300 \
  6. -e "discovery.type=single-node" \
  7. -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
  8. -v es-config:/usr/share/elasticsearch/config \
  9. -v /mydata/es-01/data:/usr/share/elasticsearch/data \
  10. --name es-01 \
  11. elasticsearch:7.13.4
  12. //其中 -e 为要指定的变量

8.挂载数据

docker run --name mysqlsql -v 本地路径:容器中文件:ro(只读模式) -d 镜像名称

9.查看当前运行的容器

docker ps

10.查看容器运行的日志

docker logs -f(监听着)  容器id

11.指定容器中文件复制出来

  1. docker cp 容器id:容器文件路径 /data/conf/config.conf(本地路径)
  2. //反过来写就是将本地的文件复制到容器中
  3. docker cp /data/conf/config.conf(本地路径) 容器id:容器文件路径

 一般运行的时候都是挂载配置文件,数据库则另外挂载数据,保证持久化

12.docker 启动命令且要开机启动

systemctl enable docker --now

二 、 构建镜像相关

1.dockerfile  模板

  1. FROM openjdk:8-jdk-slim
  2. LABLE maintainer=dida
  3. COPY 本地文件.jar /test.jar
  4. ENTRYPOINT ["java","-jar","/test.jar"]

2.docker 镜像构建

docker build -t java-test:v1.0 [Dockerfile](如果文件名就是dockerfile可以不写) .(需要有点 当前目录下)

三、k8s

1.启动一个应用

  1. kubectl create deploy myapp --image==nginx
  2. kubectl create deployment mynginx --image=nginx -- replicas=3

2.执行yaml 创建应用

  1. kubectl apply -f calico.yaml
  2. kubectl delete -f calico.yaml 删除指定的应用

k8s中对于资源的创建,可以通过命令行的方式进行,也可以都通过执行yaml文件的方式。

3.查看集群中有多少应用

  1. kubectl get pods -A (查看所有的)
  2. kubectl get pods -A (查看所有的) -w(阻塞住,可以一直监听着状态的变化)
  3. watch -n 1 kubectl get pod (每秒都打印一下pod信息)

4.获取指定用户的访问令牌 token

token 获取脚本  kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin | awk '{print $1}')

 5.查看pod的详细信息

  1. kubectl describe pod pod-name
  2. //查看pod日志
  3. kubectl logs pod-name

6.查看 pod 信息

kubectl get pod -0wide

7.进入到pod中

kubectl exec -it pod-name -- /bin/bash

8.一个pod两个容器多个容器 yaml 编写

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. labels:
  5. run: myapp
  6. name: myapp
  7. spec:
  8. containers:
  9. - image: nginx
  10. name: nginx
  11. - image: tomcat:8.5.68
  12. name: tomcat

9.扩缩容

  1. kubectl scale deploy/my-dep -- replicas = 5
  2. //缩容
  3. kubectl scale deploy/my-dep -- replicas =1

10.修改pod运行的镜像

kubectl set image deploy/my-dep nginx=nginx:1.16.1  --record

11.工作负载,几种部署模式

 service

12.创建service 暴露映射端口

  1. kubectl expose deploy my-dep --port=8000(service 暴露的端口) --target-port = pod映射的端口 --type = Nodeport 这样集群外也可以访问了,默认是 cluster-ip只能在集群内访问
  2. 默认service 暴露的端口范围 30000~32767之间

 每一组pod都有对应的标签,根据标签暴露对应的pod端口;

域名可以在pod内访问,但是在节点就不太行需要绑定;

service 就是实现了负载均衡

ingress

 13. ingress网络作用

 14.ingress 绑定服务端口,yaml配置

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: ingress-host-bar
  5. spec:
  6. ingressClassName: nginx
  7. rules:
  8. - host: "hello.atguigu.com"
  9. http:
  10. paths:
  11. - pathType: Prefix
  12. path: "/"
  13. backend:
  14. service:
  15. name: hello-server
  16. port:
  17. number: 8000
  18. - host: "demo.atguigu.com"
  19. http:
  20. paths:
  21. - pathType: Prefix
  22. path: "/nginx" # 把请求会转给下面的服务,下面的服务一定要能处理这个路径,不能处理就是404
  23. backend:
  24. service:
  25. name: nginx-demo ## java,比如使用路径重写,去掉前缀nginx
  26. port:
  27. number: 8000

存储 nfs 挂载pv/pvc

 14.原生方式挂载 nfs 的yaml配置

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. labels:
  5. app: nginx-pv-demo
  6. name: nginx-pv-demo
  7. spec:
  8. replicas: 2
  9. selector:
  10. matchLabels:
  11. app: nginx-pv-demo
  12. template:
  13. metadata:
  14. labels:
  15. app: nginx-pv-demo
  16. spec:
  17. containers:
  18. - image: nginx
  19. name: nginx
  20. volumeMounts:
  21. - name: html
  22. mountPath: /usr/share/nginx/html
  23. volumes:
  24. - name: html
  25. nfs:
  26. server: 172.31.0.4
  27. path: /nfs/data/nginx-pv

15.pv/pvc

14.创建pv yaml

  1. apiVersion: v1
  2. kind: PersistentVolume
  3. metadata:
  4. name: pv01-10m
  5. spec:
  6. capacity:
  7. storage: 10M
  8. accessModes:
  9. - ReadWriteMany
  10. storageClassName: nfs
  11. nfs:
  12. path: /nfs/data/01
  13. server: 172.31.0.4
  14. ---
  15. apiVersion: v1
  16. kind: PersistentVolume
  17. metadata:
  18. name: pv02-1gi
  19. spec:
  20. capacity:
  21. storage: 1Gi
  22. accessModes:
  23. - ReadWriteMany
  24. storageClassName: nfs
  25. nfs:
  26. path: /nfs/data/02
  27. server: 172.31.0.4
  28. ---
  29. apiVersion: v1
  30. kind: PersistentVolume
  31. metadata:
  32. name: pv03-3gi
  33. spec:
  34. capacity:
  35. storage: 3Gi
  36. accessModes:
  37. - ReadWriteMany
  38. storageClassName: nfs
  39. nfs:
  40. path: /nfs/data/03
  41. server: 172.31.0.4

 15.获取当前的pv 情况

kubectl get persistentvolume

 16.pod绑定pvc

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. labels:
  5. app: nginx-deploy-pvc
  6. name: nginx-deploy-pvc
  7. spec:
  8. replicas: 2
  9. selector:
  10. matchLabels:
  11. app: nginx-deploy-pvc
  12. template:
  13. metadata:
  14. labels:
  15. app: nginx-deploy-pvc
  16. spec:
  17. containers:
  18. - image: nginx
  19. name: nginx
  20. volumeMounts:
  21. - name: html
  22. mountPath: /usr/share/nginx/html
  23. volumes:
  24. - name: html
  25. persistentVolumeClaim:
  26. claimName: nginx-pvc

17.创建配置集yaml文件

kubectl cm redis-conf --from=redis.conf

17.config yaml

  1. apiVersion: v1
  2. data: #data是所有真正的数据,key:默认是文件名 value:配置文件的内容
  3. redis.conf: |
  4. appendonly yes
  5. kind: ConfigMap
  6. metadata:
  7. name: redis-conf
  8. namespace: default

18. pod yaml 和对应的config绑定

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: redis
  5. spec:
  6. containers:
  7. - name: redis
  8. image: redis
  9. command:
  10. - redis-server
  11. - "/redis-master/redis.conf" #指的是redis容器内部的位置
  12. ports:
  13. - containerPort: 6379
  14. volumeMounts:
  15. - mountPath: /data
  16. name: data
  17. - mountPath: /redis-master
  18. name: config
  19. volumes:
  20. - name: data
  21. emptyDir: {}
  22. - name: config
  23. configMap:
  24. name: redis-conf
  25. items:
  26. - key: redis.conf
  27. path: redis.conf

19.导出对应应用的yaml 文件

kubectl get service serviceName -o yaml > backup.yaml

四、maven

1.maven 打包命令

mvn clean package -Dmaven.test.skip = true

 

k8s笔记:

1.k8s 资源管理及查看命令

2.python 通过k8s API采集k8s 集群信息


 

  欢迎关注 迪答数据 公众号 ,更多技术、数据学习资源点击链接扫码关注!!!

数据分析从入门到进阶的必看书单!文末附所有200本书籍的PDF下载https://mp.weixin.qq.com/s?__biz=Mzk0NDEwNTE4OQ==&mid=2247485504&idx=3&sn=883a57602a9051079b34752a75d7d027&chksm=c328fbcaf45f72dc293ef3d47e8dd4b7ffc7c0fde70ccf5404f5b0d629d78cab43c52d631069&token=118918614&lang=zh_CN#rd

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/671776
推荐阅读
相关标签
  

闽ICP备14008679号