• docker 和k8s 入门


    docker 和k8s 入门

    本文是云原生的学习记录,可以参考以下文档 k8s

    https://www.yuque.com/leifengyang/oncloud

    相关视频教程可参考如下

    https://www.bilibili.com/video/BV13Q4y1C7hS?p=2&vd_source=0882f549dac54045384d4a921596e234

    相对于公有云,私有云优势灵活性更强,可搭配自己的环境,控制力更强,隐私泄露风险更低

    Docker 概念

    不管什么程序语言的程序可以通过Docker 打成一个标准的包

    可以去docker hub 下载打包好的Docker镜像

    所有软件都可以通过docker run 运行起来

    特点

    基础镜像MB级别

    创建简单docker build

    隔离性强cpu 内存,访问设备隔离,网络,用户,用户组隔离

    启动速度秒级

    分享方便

    架构

    在这里插入图片描述

    docker安装

    卸载系统以前的docker
    yum remove docker*

    1. 配置yum源
    sudo yum install -y yum-utils
    sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 安装docker
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    
    
    #以下是在安装k8s的时候使用
    yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 启动
    systemctl enable docker --now
    既要开机启动
    
    • 1
    • 2

    在这里插入图片描述

    通过以上命令查看是否启动成功

    1. 镜像加速
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m"
      },
      "storage-driver": "overlay2"
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    docker镜像地址可通过以下链接查看 https://blog.csdn.net/yu542771572/article/details/116573666

    docker镜像操作
    在这里插入图片描述
    docker pull nginx 是下载最新版

    docker pull nginx:1.20.1 下载指定版本

    docker images 查看镜像

    docker rmi nginx 删除最新版本镜像

    docker rmi redis:6.2.4 删除指定镜像

    docker rmi image_id 通过镜像id删除

    docker 容器操作

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
    【docker run  设置项   镜像名  】 镜像启动运行的命令(镜像里面默认有的,一般不会写)
    
    # -d:后台运行
    # --restart=always: 开机自启
    docker run --name=mynginx   -d  --restart=always -p  8084:80   nginx
    
    
    
    
    # 查看正在运行的容器
    docker ps
    # 查看所有
    docker ps -a
    # 删除停止的容器
    docker rm  容器id/名字
    docker rm -f mynginx   #强制删除正在运行中的
    
    #停止容器
    docker stop 容器id/名字
    #再次启动
    docker start 容器id/名字
    
    #应用开机自启 --restart=always
    docker update 容器id/名字 --restart=always
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    进入容器修改内容

    进入容器内部修改

    # 进入容器内部的系统,修改容器内容
    docker exec -it 容器id  /bin/bash
    
    • 1
    • 2
    1. 提交镜像,将保存一个镜像到本地
    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    
    docker commit -a "leifengyang"  -m "首页变化" 341d81f7504f guignginx:v1.0
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 保存镜像为一个压缩包
    # 将镜像保存成压缩包
    docker save -o abc.tar guignginx:v1.0
    
    # 别的机器加载这个镜像
    docker load -i abc.tar
    
    
    # 离线安装
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 推送到远程仓库
    docker tag local-image:tagname new-repo:tagname
    docker push new-repo:tagname
    
    # 把旧镜像的名字,改成仓库要求的新版名字
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    1. 挂载数据到外部修改
    docker run --name=mynginx   \
    -d  --restart=always \
    -p  88:80 -v /data/html:/usr/share/nginx/html:ro  \
    nginx
    
    ro 是只读模式,只能在/data/html 进行修改
    
    # 修改页面只需要去 主机的 /data/html
    # 如果/data/html 为空,容器也为空,访问nginx会出现403, 需要建立index.html文件
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    补充

    docker logs 容器名/id   排错
    
    docker exec -it 容器id /bin/bash
    
    
    # docker 经常修改nginx配置文件
    docker run -d -p 80:80 \
    -v /data/html:/usr/share/nginx/html:ro \
    -v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
    --name mynginx-02 \
    nginx
    
    
    #把容器指定位置的东西复制出来 
    docker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf
    #把外面的内容复制到容器里面
    docker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    进阶实战

    1. 使用springboot 写个jar包

    2. 将应用打包成jar包

    3. DockerFile

    FROM openjdk:8-jdk-slim
    LABEL maintainer=leifengyang
    
    COPY target/*.jar   /app.jar
    
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    在当前目录下读取dockerfile 并执行镜像构建
    docker build -t java-demo:v1.0 .
    
    • 1
    • 2
    1. 部署中间件
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
    #redis使用自定义配置文件启动
    
    docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
    -v /data/redis/data:/data \
    -d --name myredis \
    -p 6379:6379 \
    redis:latest  redis-server /etc/redis/redis.conf
    
    # 我的redis 实例
    docker run -v /opt/docker/etc/redis/redis1.conf:/etc/redis/redis.conf \
    -v /opt/docker/data/redis1/data:/data \
    -d --name myredis \
    -p 6380:6379 \
    redis:latest  redis-server /etc/redis/redis.conf
    
    注意开放6380安全组
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    1. 启动容器
    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 
    
    • 1
    1. 分享镜像
     登录docker hub
    docker login
    
    #给旧镜像起名
    docker tag java-demo:v1.0  leifengyang/java-demo:v1.0
    
    # 推送到docker hub
    docker push leifengyang/java-demo:v1.0
    
    # 别的机器
    docker pull leifengyang/java-demo:v1.0
    
    # 别的机器运行
    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    k8s学习

    在这里插入图片描述
    k8s是一个容器编排管理系统

    Kubernetes 为你提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的扩展要求、故障转移、部署模式等。 例如,Kubernetes 可以轻松管理系统的 Canary 部署。

    k8s 一般运行于多个机器上

    架构

    Kubernetes Cluster = N MasterNode + N Worker Node:N主节点+N工作节点; N>=1

    主节点可能有多个
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    k8s 安装

    在这里插入图片描述

  • 相关阅读:
    安卓常见设计模式13------过滤器模式(Kotlin版)
    刷题笔记(第一天)
    极速理解ML交叉验证
    数字疗法009 | “接受”还是“拒绝”?心理治疗背后的数字干预
    Babylon.js有哪些技术难点
    opencv之图像翻转、平移、缩放、旋转、仿射学习笔记
    PHP & MySQL图解学习指南:开启Web开发新篇章
    [附源码]计算机毕业设计JAVAjsp小微企业库存管理系统
    Vue项目预览
    网络分析笔记12:解析H264的NALU
  • 原文地址:https://blog.csdn.net/weixin_43297727/article/details/132944651