• Docker 学习笔记总结(四)


    1. docker network简介


    常见的几个网卡配置:ens33、log、virbr0。

    在这里插入图片描述

    启动docker服务后,会发现一个docker0的虚拟网桥:
    在这里插入图片描述


    # 查看docker网络命令
    docker network ls 
    
    • 1
    • 2

    docker默认创建三大网络模式:
    在这里插入图片描述

    docker network的命令如下:
    在这里插入图片描述

    docker network create 名称:创建一个docker网络。
    在这里插入图片描述

    docker network rm 网络名: 删除一个docker网络。

    docker network inspect 网络名:查看网络的详细信息。


    在这里插入图片描述

    docker net网络的作用:
    在这里插入图片描述

    2. docker network 网络模式


    4种网络模式:
    在这里插入图片描述

    每个模式对应的命令参数:
    在这里插入图片描述

    3. docker底层容器ip 和 容器映射变化


    分别启动两个ubuntu系统并且通过docker inspect来查看ip地址,如果停止后再启动这些IP会被重新分配,也就是会变化!!
    在这里插入图片描述

    总结:docker容器内部的ip是有可能发生变化的!因此,才需要网络服务,通过服务来进行调用。

    4. docker network

    4.1 bridge模式


    在这里插入图片描述
    Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

    整体架构图如下:

    • 记住veth,veth pair等等关键字。
      在这里插入图片描述

    通过命令:docker run -d -p 8083:8080 --name tomcat83 billygoo/tomcat8-jdk8 可以多测试几个不用指定 --network 默认就是bridge模式。

    在这里插入图片描述

    bridge模式总结:

    在宿主机、容器中执行ip addr命令,可以查看宿主机的veth和容器的eth0之间的匹配。
    在这里插入图片描述

    就是通过这种veth和eth0两两匹配的架构,实现宿主机与容器之间的网络通信。大多数都是使用bridge模式的通信。

    4.2 host模式


    host模式:直接使用宿主机IP地址与外界进行通信,不再需要额外进行net转换。

    在这里插入图片描述

    命令:docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8

    如果执行命令添加了-p指定端口号,会出现一个警告:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    docker inspect 容器名 | tail -n 20
    
    • 1

    host模式启动的容器,端口号会以主机端口号为主,也就是访问的时候直接访问宿主机的就可以了。

    在这里插入图片描述

    4.3 none模式


    none模式:
    在这里插入图片描述

    docker run -d --network none --name tomcat83 billygoo/tomcat8-jdk8
    
    • 1

    在这里插入图片描述

    很少用。

    4.4 container模式


    container模式:新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等。

    在这里插入图片描述

    命令效果如下:
    在这里插入图片描述

    注意:
    在这里插入图片描述

    Alpine操作系统介绍 以及 演示:
    在这里插入图片描述

    在这里插入图片描述

    docker run -it --name alpine1 alpine /bin/sh
    docker run -it --network container:alpine1 --name alpine2 alpine /bin/sh
    
    # 演示通过 ip addr来查看
    
    • 1
    • 2
    • 3
    • 4

    如果alpine1停用了,那么alpine2也就没有了网络了。

    4.5 自定义网络 模式


    在这里插入图片描述
    但是,这两个ip是动态的,如果停了又开,ip就有可能是另外一个了。


    而自定义网络就方便多了,直接通过服务名去读取。

    第一步:创建自定义网络。

    # 创建一个网络模式
    docker network create itholmes_network
    
    • 1
    • 2

    在这里插入图片描述
    第二步:创建容器的时候添加参数 --network 自定义网络名称 。

    docker run -d -p 8081:8080 --network itholmes_network --name tomcat801 billygoo/tomcat8-jdk8
    docker run -d -p 8082:8080 --network itholmes_network --name tomcat802 billygoo/tomcat8-jdk8
    
    • 1
    • 2

    在这里插入图片描述

    第三步:进入容器里面,直接ping 容器名。 如果ping成功就可以了。

    在这里插入图片描述

    自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能ping通。)

    5. docker-compose 容器编排 简介


    Docker-Compose是Docker官方的开源项目。负责实现对Docker容器集群的快速编排。

    在这里插入图片描述

    Docker-Compose中通过docker-compose.yml文件,统一来管理一些容器实例。

    docker-compose.yml的作用就是写好多个容器之间的调用关系。
    在这里插入图片描述

    在这里插入图片描述

    6. compose的下载安装


    官方文档:https://docs.docker.com/compose/compose-file/compose-file-v3/

    官方安装:https://docs.docker.com/compose/install/

    compose要严格按照官方指定的版本来,compose版本基本上都是用3版本以上的。

    在这里插入图片描述

    compose的curl方式 安装步骤 :

    curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose
    docker-compose --version
    
    • 1
    • 2
    • 3
    • 4

    curl方式安装后,卸载:

    sudo rm /usr/local/bin/docker-compose
    
    • 1

    7. compose的 几个核心概念


    **一个文件:docker-compose.yml **

    两要素:服务(service) 和 工程(project)。

    • 服务:一个个应用容器实例。
    • 工程:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。

    一个工程 对于 多个服务。

    Compose使用的三个步骤:
    在这里插入图片描述

    Compose常用命令:
    在这里插入图片描述

    8. compose编排服务 步骤


    第一步:编写docker-compose.yml文件。

    version: '3.1'
     
    volumes:
      grafana_data: {}
     
    services:
     influxdb:
      image: tutum/influxdb:0.9
      restart: always
      environment:
        - PRE_CREATE_DB=cadvisor
      ports:
        - "8083:8083"
        - "8086:8086"
      volumes:
        - ./data/influxdb:/data
     
     cadvisor:
      image: google/cadvisor
      links:
        - influxdb:influxsrv
      command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
      restart: always
      ports:
        - "8080:8080"
      volumes:
        - /:/rootfs:ro
        - /var/run:/var/run:rw
        - /sys:/sys:ro
        - /var/lib/docker/:/var/lib/docker:ro
     
     grafana:
      user: "104"
      image: grafana/grafana
      user: "104"
      restart: always
      links:
        - influxdb:influxsrv
      ports:
        - "3000:3000"
      volumes:
        - grafana_data:/var/lib/grafana
      environment:
        - HTTP_USER=admin
        - HTTP_PASS=admin
        - INFLUXDB_HOST=influxsrv
        - INFLUXDB_PORT=8086
        - INFLUXDB_NAME=cadvisor
        - INFLUXDB_USER=root
        - INFLUXDB_PASS=root
    
    • 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
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    在这里插入图片描述

    第二步:将项目中的ip换成对应的服务名!重新打包上传服务器。
    在这里插入图片描述

    第三步:编写Dockerfile文件。

    # 基础镜像使用java
    FROM java:8
    # 作者
    MAINTAINER zzyy
    # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
    VOLUME /tmp
    # 将jar包添加到容器中并更名为zzyy_docker.jar
    ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
    # 运行jar包
    RUN bash -c 'touch /zzyy_docker.jar'
    ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
    #暴露6001端口作为微服务
    EXPOSE 6001
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    第四步:在对应的目录下,执行命令docker build -t itholmes_docker:1.6 开始构建容器。

    第五步: 使用编排命令进行一键部署。

    # 检查docker-compose.yml配置编排是否正确,没有显示就是正确的。
    docker-compose config -q
    # 编排启动
    docker-compose up -d
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    这样整体的容器编排就完成了。

    9. Portainer可视化工具 安装 和 使用


    容器越来越多后,可以通过类似于网站可视化工具来管理,也是有监控的效果。

    就可以通过Docker轻量级可视化工具Portainer来实现。

    Portainer是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。

    Portainer官方:https://www.portainer.io/


    Portainer也是一个docker容器,直接通过docker命令安装就可以了。

    docker run -d -p 8000:8000 -p 9000:9000 --name portainer     --restart=always     -v /var/run/docker.sock:/var/run/docker.sock     -v portainer_data:/data     portainer/portainer
    # --restart=always是如果整个docker服务重启了,该容器也会重启,随时在线的一个效果。
    
    • 1
    • 2

    在这里插入图片描述

    第一次登录需要创建admin,访问地址:IP:9000。

    之后要选择监视本地还是远程的,这个根据情况自己选择。注意:本地指的是portainer的本地。

    在这里插入图片描述

    在这里插入图片描述

    portainer中可以操作各种各样的命令,查看inspect配置、连接控制台、日志等等。也可以对镜像、容器进行操作,也可能直接创建相关内容。

    在这里插入图片描述

    10. CIG容器重量级监控系统

    10.1 docker stats 命令


    # stats命令是查看整个docker的使用情况
    docker stats 
    
    • 1
    • 2

    在这里插入图片描述

    10.2 CIG的 介绍


    CIG就是以下三个的首字母。

    第一步:CAdvisor进行监控收集。

    第二步:InfluxDB负责存储数据。

    第三步:Granfana来进行展示图表。

    在这里插入图片描述
    在这里插入图片描述


    Cadvisor介绍:
    在这里插入图片描述

    InfluxDB介绍:
    在这里插入图片描述

    Granfana介绍:在这里插入图片描述

    10.3 CIG的 安装与启用


    第一步:创建一个指定的目录,方便管理CIG这三个容器。

    在这里插入图片描述
    第二步:在指定目录下,构建docker-compose.yml文件。

    version: '3.1'
     
    volumes:
      grafana_data: {}
     
    services:
     influxdb:
      image: tutum/influxdb:0.9
      restart: always
      environment:
        - PRE_CREATE_DB=cadvisor
      ports:
        - "8083:8083"
        - "8086:8086"
      volumes:
        - ./data/influxdb:/data
     
     cadvisor:
      image: google/cadvisor
      links:
        - influxdb:influxsrv
      command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
      restart: always
      ports:
        - "8080:8080"
      volumes:
        - /:/rootfs:ro
        - /var/run:/var/run:rw
        - /sys:/sys:ro
        - /var/lib/docker/:/var/lib/docker:ro
     
     grafana:
      user: "104"
      image: grafana/grafana
      user: "104"
      restart: always
      links:
        - influxdb:influxsrv
      ports:
        - "3000:3000"
      volumes:
        - grafana_data:/var/lib/grafana
      environment:
        - HTTP_USER=admin
        - HTTP_PASS=admin
        - INFLUXDB_HOST=influxsrv
        - INFLUXDB_PORT=8086
        - INFLUXDB_NAME=cadvisor
        - INFLUXDB_USER=root
        - INFLUXDB_PASS=root
    
    • 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
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    不要忘记,docker-compose cnofig -q 检查一下配置是否正确。

    在这里插入图片描述

    第三步:docker-compose up 或者 docker-compose up -d 启动容器编排。
    在这里插入图片描述

    这样CIG服务就搭建起来了。

    第四步:登录测试。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    10.4 CIG添加panel


    配置Grafana:

    第一步:登录,默认账户密码是admin/admin。

    第二步:添加对应的数据库,看技术选型。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    第三步:添加panel
    在这里插入图片描述
    之后选择添加panel。

    在这里插入图片描述

    第四步:编辑panel,指定监听容器和监听什么。

    # 通过该命令查看一些情况
    docker stats
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    第五步:完成了CIG的部署。
    在这里插入图片描述

  • 相关阅读:
    Qwen-VL:多功能视觉语言模型,能理解、能定位、能阅读等
    使用 Spring Profiles 的正确姿势
    OTN光层保护
    秦丝科技“羽”深大计软学院同行,共庆深圳大学成立40周年
    JAVA毕业设计古玩玉器交易系统计算机源码+lw文档+系统+调试部署+数据库
    5位cron 规则解析
    PreScan快速入门到精通第二十一讲驾驶员模型之驾驶员在环
    Leetcode P84 Java使用栈解决此问题
    DX-11Q信号继电器
    第十章:C语言的调试
  • 原文地址:https://blog.csdn.net/IT_Holmes/article/details/126722759