• docker应用、搭建、container、image、搭建私有云docker registry、容器通信、端口映射、多机多容器通信、数据持久化、docker部署wordpress、docker compose使用、负载均衡、docker Swarm、docker云部署


    docker

    一、 容器技术和docker简介

    1. 部署演变

    在一台物理机部署Application

    l 虚拟化技术

    2. 容器的必要性

    开发人员开发一个Application需要各种环境,各种依赖

    运维人员部署Application时也需要搭建各种环境

    3. 容器解决的问题

    l 解决了开发和运维之间的矛盾

    4. 容器是什么

    l 对软件和其依赖的标准化打包

    l 应用之间相互隔离

    共享同一个OS Kernel

    l 可以运行在很多主流操作系统上

    5. 虚拟机与容器的区别

    虚拟机是物理层面的隔离,容器是Application层面的隔离

    6. docker是什么

    l docker是目前最流行的容器技术的实现

    l 2004~2008年Linux已经出现了LXC2013docker包装了LXC2013年三月开源,2016docker分为企业版和社区版

    7. docker能做什么

    l 简化配置

    l 提高效率

    8. dockerkubernates

    l docker可以被k8s管理

    l kubernetes,简称k8s

    9. DevOps

    l DevOps ——解决开发和运维间合作和沟通

    不仅仅依赖docker,还需要版本管理,持续集成等

    10. docker的应用

    2015年的618大促中,京东大胆启用了基于Docker的容器技术来承载大促的关键业务(图片展现、单品页、团购页),当时基于Docker容器的弹性云项目已经有近万个Docker容器在线上环境运行,并且经受住了大流量的考验

    l 2016618中,弹性云项目更是担当重任,全部应用系统和大部分的DB服务都已经跑在Docker上,包括商品页面、用户订单、用户搜索、缓存、数据库,京东线上将会启动近15万个Docker容器

    l 京东弹性计算云通过软件定义数据中心与大规模容器集群调度,实现海量计算资源的统一管理,并满足性能与效率方面的需求,提升业务自助上线效率。应用部署密度大幅提升,资源使用率提升,节约大量的硬件资源

    二、 docker环境的各种搭建方法

    1. docker的安装介绍

    l 官网:https://docs.docker.com/

    l Docker 提供了两个版本:社区版 (CE) 和企业版 (EE)

    2. dockermac系统上安装

    3. dockerwindows系统上安装

    4. dockerCentOS系统上安装

    l 官方文档:https://docs.docker.com/install/linux/docker-ce/centos/#set-up-the-repository

    防止有残留

    yum remove docker

    docker-client

    docker-client-latest

    docker-common

    docker-latest

    docker-latest-logrotate

    docker-logrotate

    docker-selinux

    docker-engine-selinux

    docker-engine

     

    安装可能用到的依赖

    yum install -y yum-utils

    device-mapper-persistent-data

    lvm2

     

    添加位置

    yum-config-manager

    --add-repo

    https://download.docker.com/linux/centos/docker-ce.repo

     

    查询可以装什么docker版本

    yum list docker-ce --showduplicates | sort -r

     

    安装指定版本

    yum -y install docker-ce-18.06.1.ce-3.el7

     

    开启

    systemctl start docker

     

    设置开机自启动

    systemctl enable docker

     

    查看版本

     

    装完docker,修改如下文件,写入内容,重启docker,配置国内镜像

    vi /etc/docker/daemon.json

    加入以下内容:

    {

    "registry-mirrors": [

    "https://kfwkfulq.mirror.aliyuncs.com",

    "https://2lqq34jg.mirror.aliyuncs.com",

    "https://pee6w651.mirror.aliyuncs.com",

    "https://registry.docker-cn.com",

    "http://hub-mirror.c.163.com"

    ],

    "dns": ["8.8.8.8","8.8.4.4"]

    }

    重启docker 

    systemctl restart docker

    5. dockerUbuntu系统上安装

    6. docker-machine的使用

    l Docker Machine Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker

    可以通过 docker-machine 命令来管理这些虚拟机和 Docker

    7. docker palyground

    l 地址:https://labs.play-with-docker.com/

    直接使用云端的docker

    公共的,每个人用4小时

    左侧点一下,就增加一个实例

     

    三、 docker的镜像和容器

    1. docker的底层技术实现架构

    l docker提供了打包运行app的平台

    app与底层基础设施隔离

    2. docker engine

    l docker engine是核心,里面有后台进程dockerd,提供了REST API接口,还提供了CLI接口,另外,docker就是一种C/S的架构

    3. 整体架构

     

    4. 底层技术支持

    l Namespaces:网络隔离

    l Control groups:资源限制

    l Union file systems:系统分层

    5. docker image概述

    是文件和meta data的集合

    6. 制作baseImage

    l baseImage:基于系统的基础镜像

     

     

    根据当前位置编译镜像

    docker build -t gochaochao/hello-world .

     

    可以查看编译后的镜像

    docker image ls

     

    运行镜像,成为一个容器

    docker run gochaochao/hello-world

     

    也可以官方直接拉取镜像

    docker pull redis

     

    查看镜像

     

    7. container概念和使用

    l container可以理解为运行时的实例,与image不同

    查看所有运行过的container容器

     

    如果没有就去官方下载

     

    可以交互运行容器

     

    此时,可以查到当期运行时的容器

     

    删除某个镜像

     

    还可以删除所有容器

     

    查出所有没有在运行的实例

     

    如下指令可以删除没有在运行的容器

     

     

    8. 创建Image的两种方式

    基于image创建container后,如果在container做了一些变化,例如安装了某个软件,可以将这些改变,commit成一个新的image,也可以简写为docker commit

    交互运行一个centos实例,给里面装一个lrzsz

     

    装完退出

     

    可以查看到修改后的容器

     

    将这个新的容器,打包成一个新的镜像

    生成新的镜像

    docker commit determined_hermann gochaochao/centos-lrzsz

     

    查看镜像

     

    还可以根据镜像id,查看到镜像分层信息

     

    使用Dockerfile,通过build制作image,可以简写为docker build

    通过定义文件,一样的效果

     

     

    编译镜像

    docker build -t gochaochao/centos-lrzsz2 .

     

     

    可以查看到多出个镜像

    再次启动:docker container start 470671670cac

     

    9. Dockerfile详解

    l FROM:从哪开始,从一个系统开始

    FROM scratch         # 最小系统

    FROM centos         

    FROM ubuntu:14.04

    l LABEL:注释

    LABEL version=”1.0”

    LABEL auther=”sjc”

    l RUN:执行命令,每RUN一次,会多一个系统分层,尽量少一些层

    RUN yum -y update && install lrzsz

    net-tools

    l WORKDIR:进入或创建目录,尽量不要用相对路径

    WORKDIR /root     # 进入 /root 目录

    WORKDIR /test     # 会在根下,创建 /test 并进入

    WORKDIR demo    # 创建demo,进入

    RUN pwd          # /test/demo

    l ADD and COPY:将本地的文件,添加到image里,COPYADD区别是不会解压

    ADD hello /  # 将当前目录下hello,添加到容器的根下

    ADD tt.tar.gz /  # 压缩包扔进去,并解压

    l ENV,增加Dockerfile的可读性,健壮性

     

    l CMD and ENTRYPOINT:执行命令或运行某个脚本

    10. Dockerfile——CMD vs ENTRYPOINT

    l ShellExec格式

     

    l ENTRYPOINTCMD:容器启动时,运行什么命令

     

    ENTRYPOINTCMD用的多,因为CMD有可能执行完前面的,把后面定义的CMD给忽略不执行了

    11. 分享docker image

    l image名字一定要以自己docker hub的用户名开头

    登录

     

    上传镜像到docker hub

    docker image push gochaochao/centos-lrzsz2:latest

     

    下载镜像到本地

     

    若想从docker hub删镜像

     

     

     

    12. 分享Dockerfile

    l docker image不如分享Dockerfile,更加安全

    13. 搭建私有docker registry

    l github是公开的,也可以创建自己的私有仓库

    docker官方给提供了私有仓库的镜像

     

    准备第二台机器,作为私有仓库

    第二台运行如下

    docker run -d -p 5000:5000 --restart always --name registry registry:2

     

    查看进程,运行没问题

     

    浏览器可以看到第二台机器仓库里,没东西

     

    测试端口,第一台可以下个telnet

    yum -y install telnet

     

    输入q退出

     

    编写dockerfile,编译要求的镜像名

     

    按dd删除整行

     

    编译镜像,IP是私有仓库的IP

    docker build -t 192.168.190.131:5000/centos .

     

    编写文件,加一行

    "insecure-registries":["192.168.190.131:5000"],

     

     

    重启docker

     

    上传到私有仓库

     

    刷新页面,私有仓库有内容了

     

    若从私有仓库下东西,如下:

    docker pull 192.168.190.131:5000/centos

    14. Dockerfile案例

    创建一个pythonweb应用,然后打包成docker image运行

    from flask import Flask

    app = Flask(__name__)

    @app.route('/')

    def hello():

        return "hello docker"

    if __name__ == '__main__':

        app.run()

    创建目录,创建个app.py,拷贝上面代码

     

     

    创建Dockerfile

     

    FROM python:3.6

    LABEL auth="sun"

    RUN pip install flask

    COPY app.py /app/

    WORKDIR /app

    EXPOSE 5000

    CMD ["python","app.py"]

    构建镜像

    docker build -t gochaochao/flask-hello-world .

     

    运行镜像

    docker run gochaochao/flask-hello-world

     

    此时可以查看到进程

     

    15. 运行中对container操作

    l exec命令用于调用并执行指令的命令

    后台运行

     

    可以交互运行里面的机器,根据运行时的container ID

     

    交互运行容器里面机器的python shell

    docker exec -it e8517231ecd8 python

     

    后台运行一个容器,并指定容器名字

    docker run -d --name=demo gochaochao/flask-hello-world

     

    可以根据名字停止启动

     

    可以查看运行时的容器的运行日志

     

    查看运行时容器详细信息

     

    ping一下里面的地址

     

    16. 对容器资源限制

    l 对内存的限制

    CPU的限制

    可以指定开启容器占用的内存和CPU

     

    四、 docker的网络

    1. 网络分类

    l 单机

    n Bridge Network:相当于VMware的桥接,默认跑这个

    n Host Network:类似于VMNAT

    n None Network:没网

    l 多机

    n Overlay Network:集群网络

    可以查看网卡信息

     

    2. Linux网络命名空间namespace

    命名空间是docker底层重要的概念

    3. Bridge详解

    l 进行多容器通信

    4. 容器通信

    有时写代码时,并不知道要请求的IP地址

    运行一个最小系统

    docker run -d --name test1 busybox /bin/sh -c "while true;do sleep 3600;done"

     

    起第二个最小系统,链接第一个

    链接类似于配置主机名和映射

    docker run -d --name test2 --link test1 busybox /bin/sh -c "while true;do sleep 3600;done"

     

    假设此时,test2部署了项目,test1部署了项目用的mysql,那么项目访问mysql时,编写项目就可以不指定IP,指定成test1,就可以通,因为是linke了

    5. 端口映射

    l 实现外界访问

    运行一个nginx,可以查到进程

     

     

    通过桥接网卡,查看到容器的IP

     

     

    从本机,可以访问到nginx启动了的主页

     

    此时外界是无法访问到的,可以通过端口映射解决

    停止并删除前面的容器

     

    端口映射启动容器

    docker run --name web -d -p 80:80 nginx

     

    此时,外界浏览器可以通过虚拟机IP,访问到容器内的内容

     

    6. 网络的nonehost

    l none应用场景:安全性要求极高,存储绝密数据等

    l host网络类似于NAT

    7. 多容器部署和应用

    可以清理下前面的容器

     

     

    2个容器,一个用flaskweb服务,另一个redis做自增

    首先,跑起来一台redis

     

     

    创建目录,编写代码

     

    l app.py

    from flask import Flask

    from redis import Redis

    import os

    import socket

     

    app = Flask(__name__)

    redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)

     

    @app.route('/')

    def hello():

        redis.incr('hits')

        return 'Hello Container World! I have been seen %s times and my hostname is %s. ' % (redis.get('hits'),socket.gethostname())

     

    if __name__ == "__main__":

        app.run(host="0.0.0.0", port=5000, debug=True)

    再编写一个dockerfile

     

    l Dockerfile

    FROM python:2.7

    LABEL maintaner="1320685524@qq.com"

    COPY . /app

    WORKDIR /app

    RUN pip install flask redis

    EXPOSE 5000

    CMD [ "python", "app.py" ]

    构建一个镜像

    docker build -t gochaochao/flask-redis .

     

    运行构建好的镜像,外界访问,需要加个 -p 5000:5000

     

    成功跑起2个容器

     

    进入flask容器,访问运行的代码,可以看到调用了redis自增

     

    8. 多机器多容器通信

    可能出现容器IP一样,会出问题,可以加一个etcd去管理,防止IP冲突

     

    2台机器,etcd安装包传到2台机器

     

    都解压

     

    第一台:进入解压后的etcd,运行如下,注意修改IP

    运行.txt 找命令,拷贝进去

    etcd启动命令(node01),注意修改IP

    nohup ./etcd --name docker-node1 --initial-advertise-peer-urls http://192.168.83.128:2380

    --listen-peer-urls http://192.168.83.128:2380

    --listen-client-urls http://192.168.83.128:2379,http://127.0.0.1:2379

    --advertise-client-urls http://192.168.83.128:2379

    --initial-cluster-token etcd-cluster

    --initial-cluster docker-node1=http://192.168.83.128:2380,docker-node2=http://192.168.83.130:2380

    --initial-cluster-state new&

    etcd启动命令(node02),注意修改IP

    nohup ./etcd --name docker-node2 --initial-advertise-peer-urls http://192.168.83.130:2380

    --listen-peer-urls http://192.168.83.130:2380

    --listen-client-urls http://192.168.83.130:2379,http://127.0.0.1:2379

    --advertise-client-urls http://192.168.83.130:2379

    --initial-cluster-token etcd-cluster

    --initial-cluster docker-node1=http://192.168.83.128:2380,docker-node2=http://192.168.83.130:2380

    --initial-cluster-state new&

     

    2台可以看到etcd是健康的状态

     

    此时,停止docker

     

    运行被etcd管理的docker

    /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.83.128:2379 --cluster-advertise=192.168.83.128:2375&

     

    第二台一样的,停止docker,然后 运行.txt里找命令启动

    /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.83.130:2379 --cluster-advertise=192.168.83.130:2375&

    查看网络docker network

     

    查看网路详细信息docker network ls

     

    上面搞定后,第一台机器创建个虚拟网卡

    docker network create -d overlay demo

     

    此时,第二台也可以看到这个网络

     

    还可以第一台创建个容器

    docker run -d --name test3 --net demo busybox sh -c "while true;do sleep 3600;done"

     

    此时第二台运行一样的,会报错,已经存在,解决了集群间docker机器互相不认识的情况

     

    例如一台做redis,一台做web处理

    l app.py

    from flask import Flask

    from redis import Redis

    import os

    import socket

     

    app = Flask(__name__)

    redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)

     

    @app.route('/')

    def hello():

        redis.incr('hits')

        return 'Hello Container World! I have been seen %s times and my hostname is %s. ' % (redis.get('hits'),socket.gethostname())

     

    if __name__ == "__main__":

        app.run(host="0.0.0.0", port=5000, debug=True)

    l Dockerfile

    FROM python:2.7

    LABEL maintaner="sjc_job@126.com"

    COPY . /app

    WORKDIR /app

    RUN pip install flask redis

    EXPOSE 5000

    CMD [ "python", "app.py" ]

    9. overlay网络和etcd通信

    l 多机多容器部署时,需要保证地址不冲突

    五、 docker的持久化存储和数据共享

    1. 数据持久化引入

    l 容器中数据存在丢失的风险

    2. 数据持久化方案

    基于本地文件系统的Volume

    基于pluginVolume

    3. Volume的类型

    受管理的data Volume:由docker后台自动创建

    绑定挂载的Volume:具体挂载位置可以由用户指定

    4. 数据持久化——data Volume

    l https://hub.docker.com/mysql,可以看到官方的Dockerfile中也定义了VOLUME

    官方mysql里定义的

     

    前边的容器清一下

     

    后台启动个mysql

    docker run -d --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

     

    查看docker所有的持久化到本地的数据文件

     

    可以看到存到了本地的哪里详细信息

     

    持久化的redis数据

     

    持久化的mysql数据

     

    存储的mysql库文件

     

    可以清除不被引用的数据文件

    docker volume prune

     

    启动容器,指定持久化数据目录文件

    docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

     

    进入容器的mysql

     

    随便写点东西退出

     

     

    关闭并删除容器

     

    指定数据同步位置,开mysql容器

    docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

     

    交互运行,可以查看到数据已经导入

     

     

    5. 数据持久化——bind mouting

    l 可以指定一个与容器同步的文件夹,容器变化,文件同步变化

    找个目录,创建个文件,写点东西

     

     

    编写dockerfile

    FROM nginx:latest

    WORKDIR /usr/share/nginx/html

    COPY index.html index.html

     

    构建镜像

     

    启动容器,挂载目录

     

    此时,修改本地index.html文件,里面访问的首页是直接变的

     

    六、 docker Compose多容器部署

    1. docker部署wordpress

    l wordpress是一个博客网站,需要2个镜像,还需要一个mysql

    查看所有的image

     

    清理image

     

    下载wordpress

     

    5.5

     

    5.5的,改成latest

    docker tag mysql:5.5 mysql:latest

     

    启动mysql镜像

     

    启动wordpress镜像

     

    浏览器查看下

     

    上面wordpress部署,需要一个一个的下载和开启,比较麻烦,需要docker compose

    2. docker compose介绍

    l 多容器的APP很难部署和管理,docker compose就类似于批处理

    3. docker compose安装和使用

    先上传文件到目录

     

    l 安装后需要赋权限

     

    查看版本号

     

    创建文件夹

     

    创建文件,写入以下内容

     

    docker-compose的方式部署wordpress

    version: '3'

     

    services:

     

      wordpress:

        image: wordpress

        ports:

          - 80:80

        environment:

          WORDPRESS_DB_HOST: mysql

          WORDPRESS_DB_PASSWORD: admin

        networks:

          - my-bridge

     

      mysql:

        image: mysql:5.5

        environment:

          MYSQL_ROOT_PASSWORD: admin

          MYSQL_DATABASE: wordpress

        volumes:

          - mysql-data:/var/lib/mysql

        networks:

          - my-bridge

     

    volumes:

      mysql-data:

     

    networks:

      my-bridge:

        driver: bridge

    启动compose

     

    浏览器查看

     

    可以查看进程

     

    对于很复杂的项目,只要编写好docker-compose,就可以很容易的运行起来

     

    4. 容器扩展和负载均衡

    l 容器扩展

    stop停止容器,down是停止并删除

     

     

    docker-compose结合Dockerfile使用

    在前边例子里,编写一个docker-compose.yml ,加入如下内容

     

     

    version: "3"

    services:

      redis:

        image: redis

      web:

        build:

          context: .

          dockerfile: Dockerfile

        ports:

          - 8080:5000

        environment:

          REDIS_HOST: redis

    运行

     

    可以通过浏览器访问

     

    停止docker-compose

     

    docker-compose.yml 里如下2行删掉

     

    进行容器扩展

     

    加负载均衡:

    首先修改 app.py

     

     

    Dockerfile里面也改一下

     

     

    docker-compose.yml文件,加入以下内容,负载均衡

    lb:

    image: dockercloud/haproxy

    links:

    - web

    ports:

    - 8080:80

    volumes:

    - /var/run/docker.sock:/var/run/docker.sock

    version: "3"

    services:

      redis:

        image: redis

      web:

        build:

          context: .

          dockerfile: Dockerfile

        environment:

          REDIS_HOST: redis

      lb:

        image: dockercloud/haproxy

        links:

          - web

        ports:

          - 8080:80

        volumes:

          - /var/run/docker.sock:/var/run/docker.sock

    再次启动容器

    docker-compose up --scale web=3 -d

     

    启动后,访问代码,可以看出是不同的容器返回的信息

     

    5. 复杂应用部署

    l 6-5项目部署

    七、 容器编排docker Swarm

    k8s   管理所有的docker的

    docker swarm k8s功能差不多

    1. 编排swarm简介

     

    l 服务创建和调度

    l 在swarm manage做决策,决定将worker部署到哪里

     

    2. 三节点swarm集群的搭建

    3. 创建维护Service并扩展

    4. 使用DockerStack部署VotingApp

    5. 使用DockerStack部署可视化应用

    6. 使用并管理DockerSecret

    7. 更新service版本

    八、 docker Cloud和docker企业版

    1. docker公司业务介绍

    l 2017年初,docker分为社区版和企业版

    l docker公司还提供培训,网址:https://training.docker.com/

     

    l docker公司还提供认证,网址:http://success.docker.com/

     

    l 类似于苹果的AppStore,网址:https://store.docker.com/

     

    可以通过web界面创建service,网址:https://cloud.docker.com/,这是收费的

     

    2. docker cloud自动化构建

    docker公司第一个CaaScontainer-as-a-service)产品,提供容器服务的,是在PaaS(类似于阿里云)之上的,就算在云上搭建docker服务

    l 是提供容器的管理、编排、部署的托管服务

    l docker公司2015年收购了tutum公司,将tutum改装成了docker cloud

    l docker cloud提供的主要模块如下:

     

    使用docker cloud时,需要与github账号关联

    3. docker企业版的在线使用

    l 网址:https://www.docker.com/products/docker-enterprise

    使用docker公司提供的单节点的企业版试用,试用时间12小时

    l 点击申请使用

     

    l 在线试用时间太短,下面用本地试用的方式

    4. 阿里云部署容器

    l 网址:https://cn.aliyun.com/

     

    l 往下拉,点击右侧容器服务

     

    l 点击立即开通

     

    l 可以直接支付宝登录

     

    l 授权

     

    l 注册

     

    l 立即开通,可能需要实名认证

     

    l 成功开通

     

    l 同意授权

     

    5. 阿里云部署dockerEE

    l 网址:https://cn.aliyun.com/

    九、 容器编排Kubernetes

    l KubernetesGoogle开源的容器集群管理系统,可能被墙,所以要。。。

    简称k8s2017年底,docker宣布支持k8s,宣布了k8s取得了阶段性胜利

    l 20147月,Docker收购Orchard Labs,由此Docker公司开始涉足容器编排领域,Orchard Labs这家2013年由两位牛逼的年轻人创建的公司,有一个当时非常著名的容器编排工具fig,而这个fig就是docker-compose的前身

    l 2015年初,Docker发布Swarm,开始追赶Kubernetes的脚步,正式进入容器编排领域,与k8s竞争

    l 20173月,Docker公司宣布Docker企业版诞生,自此开始区分社区版和企业版,从2016年到2017年初,Docker公司的一些列动作充分展示了一个创业公司的盈利压力。Docker公司的一系列努力,并没有能让Docker Swarm走上容器编排的巅峰,相反,Kubernetes因为其优秀的架构和健康的社区环境,得到迅速发展,在生产环境中得到了广泛的应用,然后用户反馈,社区回应,良性循环了下去。2017年各大厂商都开始拥抱Kubernetes,亚马逊AWSMicrosoft AzureVMware, 有的甚至抛弃了自家的产品

    l 2017年底,Docker宣布在自家企业版里支持Kubernetes,和Swarm一起作为容器编排的解决方案供用户选择

    在容器底层技术领域,Docker还是老大,Kubernetes底层更更多的还是选择使用containerd

     

    l swarm的架构

    l k8s的架构,主称为master,从称为node

     

    l k8smaster节点,API Server是对外的,可以通过UI访问,Scheduler是调度模块,Controller是控制模块,etcd就是分布式存储,存储k8s整个的状态和配置

     

    l k8snode节点,pod是容器中调度的最小单位,指具有相同namespacecontainer的组合,kubelet类似于代理,可以做创建容器的管理,kube-proxy和网络有关,做端口代理和转发,Fluentd是做日志的采集、存储和查询

     

    l k8s整体架构

     

    十、 总结

  • 相关阅读:
    PyTorch-->Tensors(张量)
    Pytorch-->PyTorch学习(1)
    信息安全四大顶会!!!
    2020春季数据库-->关系演算安全性的理解
    2020春季数据库-->三级模式和两层映像
    2020寒假->Web编程(1)
    Httprequseter 插件使用
    YII2 客户端验证
    谷歌网页全屏截图
    后台新订单提醒
  • 原文地址:https://www.cnblogs.com/zhang-da/p/13062671.html
Copyright © 2020-2023  润新知