• Docker(第四部分)


    Docker微服务实战

    通过IDEA新建一个普通微服务模块

    把包放到linux机器里

    pwd

    通过dockerfile发布微服务部署到docker容器

    dockerfile的内容

    防火墙

    Docker网络

    网络主机

    是什么?

    网桥virbr0

    常用基本命令

    能干嘛

    网络模式

    最后都和u3一样了

    结论:docker容器内部的ip是有可能发生变化的,没有人用分给用的人了

    Docker平台架构图解

    整体说明:

    从其架构和运行流程来看,Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。

    Docker运行的基本流程为:

    1,用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。

    2,Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client请求。

    3,Docker Engine 执行Docker内部的一系列工作,每一项工作都是以一个Job的形式存在。

    4,Job的运行过程中,当需要容器镜像时,通过网络管理驱动Netowrk driver创建并配置Docker容器网络环境。

    6,当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Execdriver来完成。

    7,Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

    docker network 之bridge

    案例说明:

    bridge
    是什么?

    Docker默认会创建一个docker0网桥(其上有一个docker0内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

    #查看bridge网络的详细信息。并通过grep获取名称项。

    docker network inspect bridge | grep name

    ifconfig

    说明:
    没有ipv4,docker0是各个container的网关。

    1.Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

    2.docker run 的时候,没有指定network的话默认使用的网桥模式就是bridge。使用的就是docker0.

    在宿主机ifconfig,就可以看到docker0和自己create的network(后面讲)eth0,eth1,eth2,代表网卡1,网卡2,网卡3.lo代表127.0.0.1,即localhost,inet addr用来表示网卡的IP地址。

    3网桥docker0创建一对对等虚拟设备接口一个叫veth,另一个叫eth0,成对匹配。

    3.1整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair);

    3.2每个容器实例内部也有一块网卡,每个接口叫eth0;

    3.3docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对,一一配对。

    通过上述所述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的ip,此时两个容器的网络是互通的。

    代码

    docker run -d -p 8081:8080  --name tomcat81 billygoo/tomcat8-jdk8

    docker run -d -p 8082:8080  --name tomcat82 billygoo/tomcat8-jdk8

    docker ps

    ip addr

    host

    是什么?

    直接使用宿主机的IP地址与外界进行通信,不再需要额外进行NAT转换

    案例

    说明:容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。

    docker run -d -p 8083:8080 --network host --nmae tomcat83 billygoo/tomcat8-jdk8

    正确:docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8

    无之前的配对显示了,看容器实例内部

    docker exec

    没有设置-p的端口映射了,如何访问启动的tomcat83??

    用的是宿主机的

    http://宿主机IP:8080/

    在CentOS里面用默认的火狐浏览器访问容器内的tomcat83看到访问成功。因为此时容器的IP借用主机的,所以容器共享主机网络IP。这样的好处是外部主机与容器可以直接通信。

    none

    是什么?:禁用网络功能,只有lo标识(就是127.0.0.1表示本地回环)

    在none模式下,并不为Docker容器进行任何网络配置。

    也就是说,这个Docker容器没有网卡,IP,路由等信息,只有一个lo

    需要我们自己为Docker容器添加网卡,配置IP等。

    案例:

    docker run -d -p 8084:8080 --network none --name tomcat84 billygoo/tomcat8-jdk8

    container网络模式:

    新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围等。同样,两个容器除了网络方面,其他的如文件系统。进程列表等还是隔离的。

    docker run -d -p 8085:8080

    --name tomcat85 billygoo/tomcat8-jdk8

    docker run -d -p 8086:8080 --network container:tomcat85 --name tomcat86 billygoo/tomcat8-jdk8

    运行结果:

    Alpine Linux

    自定义网络

    过时的link

    是什么

    案例

    问题

    5。Docker-compose容器编排

    是什么?

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

    可以管理多个Docker容器组成一个应用。你需要定义一个YAML格式的配置文件。

    docker-compose。yml,写好多个容器之间的调用关系。然后,只要一个命令。就能

    同时启动,关闭这些容器。

    能干嘛?

    去哪下

    安装

    卸载

    核心概念

    Compose使用的三个步骤

    Compose常用命令

    Compose编排微服务

  • 相关阅读:
    【华为OD机试真题 python】 高矮个子排队【2022 Q4 | 100分】
    笙默考试管理系统-MyExamTest----codemirror(38)
    一篇文章让你两种方式调用星火大模型,搭建属于自己的“chatgpt”
    航拍无人机技术,航拍无人机方案详解,无人机摄影技术
    SGE(集群任务管理系统)常用操作命令
    AQS核心原理分析《上》
    [附源码]计算机毕业设计基于springboot的家政服务平台
    PaddleOCR识别框架解读[14] OCR数据集
    二线程序员的出路
    终于有人把“Linux云计算路线”整理出来了,收藏起来,随时查看
  • 原文地址:https://blog.csdn.net/weixin_54689506/article/details/135920711