赞
踩
欢迎关注 迪答数据 公众号 ,更多技术、数据学习资源点击链接扫码关注!!!
1.进入容器内部的系统,修改容器内容
docker exec -it 容器id /bin/bash
2.提交修改好的镜像
- //提交镜像修改
- docker commit -a "用户名" -m "提交注释" -m 容器id
3. 查看当前的镜像
docker images
4.将镜像保存为压缩包 可以供其他机器加载
- docker save -o abc.tar didamysql:v1.0
-
- //在别的机器加载
-
- docker load -i abc.tar
5.推送远程仓库
-
- docker tag 本地镜像:v1.0 远程仓库名:镜像名:v1.2 //类似于将本地镜像名改为远程指定名字,因为需要带有远程仓库的类似于用户标识,才能被远程镜像仓库识别
-
-
- docker login 登录远程仓库
-
- docker logout (推送完成后退出)
-
- docker push 远程仓库名:镜像名:v1.2(也就是新改的名字)
-
6.拉取镜像 到本地
- docker pull 远程仓库认证路径:镜像名:v1.2
-
- docker pull dida/my-repo:mysql:v1.2
7.运行镜像
docker run -d(后台运行) -p80:80(端口映射,端口暴露,机器的端口映射到容器端口) 镜像名:版本号
- #es docker启动步骤
-
- # 创建数据目录
- mkdir -p /mydata/es-01 && chmod 777 -R /mydata/es-01
-
- # 容器启动
- docker run --restart=always -d -p 9200:9200 -p 9300:9300 \
- -e "discovery.type=single-node" \
- -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
- -v es-config:/usr/share/elasticsearch/config \
- -v /mydata/es-01/data:/usr/share/elasticsearch/data \
- --name es-01 \
- elasticsearch:7.13.4
-
-
- //其中 -e 为要指定的变量
8.挂载数据
docker run --name mysqlsql -v 本地路径:容器中文件:ro(只读模式) -d 镜像名称
9.查看当前运行的容器
docker ps
10.查看容器运行的日志
docker logs -f(监听着) 容器id
11.指定容器中文件复制出来
- docker cp 容器id:容器文件路径 /data/conf/config.conf(本地路径)
-
- //反过来写就是将本地的文件复制到容器中
- docker cp /data/conf/config.conf(本地路径) 容器id:容器文件路径
-
一般运行的时候都是挂载配置文件,数据库则另外挂载数据,保证持久化
12.docker 启动命令且要开机启动
systemctl enable docker --now
1.dockerfile 模板
- FROM openjdk:8-jdk-slim
- LABLE maintainer=dida
-
- COPY 本地文件.jar /test.jar
-
- ENTRYPOINT ["java","-jar","/test.jar"]
2.docker 镜像构建
docker build -t java-test:v1.0 [Dockerfile](如果文件名就是dockerfile可以不写) .(需要有点 当前目录下)
1.启动一个应用
- kubectl create deploy myapp --image==nginx
-
- kubectl create deployment mynginx --image=nginx -- replicas=3
2.执行yaml 创建应用
- kubectl apply -f calico.yaml
-
- kubectl delete -f calico.yaml 删除指定的应用
k8s中对于资源的创建,可以通过命令行的方式进行,也可以都通过执行yaml文件的方式。
3.查看集群中有多少应用
- kubectl get pods -A (查看所有的)
-
- kubectl get pods -A (查看所有的) -w(阻塞住,可以一直监听着状态的变化)
-
- 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的详细信息
- kubectl describe pod pod-name
-
- //查看pod日志
- kubectl logs pod-name
6.查看 pod 信息
kubectl get pod -0wide
7.进入到pod中
kubectl exec -it pod-name -- /bin/bash
8.一个pod两个容器多个容器 yaml 编写
- apiVersion: v1
- kind: Pod
- metadata:
- labels:
- run: myapp
- name: myapp
- spec:
- containers:
- - image: nginx
- name: nginx
- - image: tomcat:8.5.68
- name: tomcat
9.扩缩容
- kubectl scale deploy/my-dep -- replicas = 5
-
- //缩容
- kubectl scale deploy/my-dep -- replicas =1
10.修改pod运行的镜像
kubectl set image deploy/my-dep nginx=nginx:1.16.1 --record
11.工作负载,几种部署模式
12.创建service 暴露映射端口
- kubectl expose deploy my-dep --port=8000(service 暴露的端口) --target-port = pod映射的端口 --type = Nodeport 这样集群外也可以访问了,默认是 cluster-ip只能在集群内访问
-
- 默认service 暴露的端口范围 30000~32767之间
每一组pod都有对应的标签,根据标签暴露对应的pod端口;
域名可以在pod内访问,但是在节点就不太行需要绑定;
service 就是实现了负载均衡
13. ingress网络作用
14.ingress 绑定服务端口,yaml配置
- apiVersion: networking.k8s.io/v1
- kind: Ingress
- metadata:
- name: ingress-host-bar
- spec:
- ingressClassName: nginx
- rules:
- - host: "hello.atguigu.com"
- http:
- paths:
- - pathType: Prefix
- path: "/"
- backend:
- service:
- name: hello-server
- port:
- number: 8000
- - host: "demo.atguigu.com"
- http:
- paths:
- - pathType: Prefix
- path: "/nginx" # 把请求会转给下面的服务,下面的服务一定要能处理这个路径,不能处理就是404
- backend:
- service:
- name: nginx-demo ## java,比如使用路径重写,去掉前缀nginx
- port:
- number: 8000
14.原生方式挂载 nfs 的yaml配置
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- labels:
- app: nginx-pv-demo
- name: nginx-pv-demo
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: nginx-pv-demo
- template:
- metadata:
- labels:
- app: nginx-pv-demo
- spec:
- containers:
- - image: nginx
- name: nginx
- volumeMounts:
- - name: html
- mountPath: /usr/share/nginx/html
- volumes:
- - name: html
- nfs:
- server: 172.31.0.4
- path: /nfs/data/nginx-pv
15.pv/pvc
14.创建pv yaml
- apiVersion: v1
- kind: PersistentVolume
- metadata:
- name: pv01-10m
- spec:
- capacity:
- storage: 10M
- accessModes:
- - ReadWriteMany
- storageClassName: nfs
- nfs:
- path: /nfs/data/01
- server: 172.31.0.4
- ---
- apiVersion: v1
- kind: PersistentVolume
- metadata:
- name: pv02-1gi
- spec:
- capacity:
- storage: 1Gi
- accessModes:
- - ReadWriteMany
- storageClassName: nfs
- nfs:
- path: /nfs/data/02
- server: 172.31.0.4
- ---
- apiVersion: v1
- kind: PersistentVolume
- metadata:
- name: pv03-3gi
- spec:
- capacity:
- storage: 3Gi
- accessModes:
- - ReadWriteMany
- storageClassName: nfs
- nfs:
- path: /nfs/data/03
- server: 172.31.0.4
15.获取当前的pv 情况
kubectl get persistentvolume
16.pod绑定pvc
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- labels:
- app: nginx-deploy-pvc
- name: nginx-deploy-pvc
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: nginx-deploy-pvc
- template:
- metadata:
- labels:
- app: nginx-deploy-pvc
- spec:
- containers:
- - image: nginx
- name: nginx
- volumeMounts:
- - name: html
- mountPath: /usr/share/nginx/html
- volumes:
- - name: html
- persistentVolumeClaim:
- claimName: nginx-pvc
17.创建配置集yaml文件
kubectl cm redis-conf --from=redis.conf
17.config yaml
- apiVersion: v1
- data: #data是所有真正的数据,key:默认是文件名 value:配置文件的内容
- redis.conf: |
- appendonly yes
- kind: ConfigMap
- metadata:
- name: redis-conf
- namespace: default
18. pod yaml 和对应的config绑定
- apiVersion: v1
- kind: Pod
- metadata:
- name: redis
- spec:
- containers:
- - name: redis
- image: redis
- command:
- - redis-server
- - "/redis-master/redis.conf" #指的是redis容器内部的位置
- ports:
- - containerPort: 6379
- volumeMounts:
- - mountPath: /data
- name: data
- - mountPath: /redis-master
- name: config
- volumes:
- - name: data
- emptyDir: {}
- - name: config
- configMap:
- name: redis-conf
- items:
- - key: redis.conf
- path: redis.conf
19.导出对应应用的yaml 文件
kubectl get service serviceName -o yaml > backup.yaml
1.maven 打包命令
mvn clean package -Dmaven.test.skip = true
k8s笔记:
欢迎关注 迪答数据 公众号 ,更多技术、数据学习资源点击链接扫码关注!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。