Docker之网络配置的使用

这篇具有很好参考价值的文章主要介绍了Docker之网络配置的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 Docker之网络配置的使用,部署,docker,网络,容器

  🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的博客专栏《Docker之网络配置的使用》。🎯🎯

🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁

Docker之网络配置的使用,部署,docker,网络,容器

前言

        在上期的博客的分享过程中我们分享了Dockerfile如何去构建我们的自定义镜像去符合我们的一个使用需求,以及将我们的构建好的一个镜像文件上传到我们自己的镜像仓库中,方便我们的同事以及项目的部署。今天的我们分享的是docker中的网络配置的使用。

一、网络配置简介

1. 基本概述

        在Docker中,网络配置是指设置和管理容器之间及容器与主机之间的网络通信方式的过程。Docker提供了各种网络模式和选项,允许用户在不同场景下进行网络配置。

常见的docker网络配置概念

常见的Docker网络配置概念
配置概念 说明
默认网络模式

默认情况下,Docker容器使用桥接网络模式(bridge mode)。每个容器都分配了一个独立的IP地址,并且可以通过主机的IP地址进行访问。

自定义桥接网络

用户可以创建自定义的桥接网络,将多个容器连接到同一网络中。这有助于容器之间的通信,而不依赖于宿主机的IP地址。

主机网络模式

使用主机网络模式,容器共享主机的网络命名空间,直接使用主机的网络栈。这意味着容器可以使用主机的IP地址和端口,但也可能导致端口冲突。

无网络模式 在无网络模式下,容器不具备任何网络功能。这适用于某些特殊场景,例如纯粹用于计算的容器
覆盖网络

Docker提供了覆盖网络(overlay network)以支持跨主机的容器通信。这在分布式系统和集群中很有用。

macvlan和ipvlan网络 这两种网络模式允许容器分配到物理网络的MAC地址或IP地址,使得容器直接与物理网络上的设备通信
网络别名和链接

Docker容器可以使用网络别名,允许容器通过多个名称进行访问。此外,通过链接(linking),一个容器可以访问另一个容器的网络栈。

Docker Compose Docker Compose允许通过YAML文件定义多个服务及其网络配置,简化了多容器应用的管理

         总之,Docker提供了灵活的方式来管理容器之间的通信,同时允许用户根据应用程序的需求进行定制化的网络设置。

2. 网络配置的主要用途

  1. 容器之间的通信:

    • 通过网络配置,可以方便地实现容器之间的通信。不同容器可以在同一网络中,通过容器名称或IP地址相互访问。
  2. 与主机的通信:

    • Docker容器可以配置成与主机进行通信,这对于特定应用场景非常有用。容器可以通过主机的IP地址或localhost进行访问。
  3. 隔离和安全性:

    • Docker的网络隔离允许容器在相对安全的环境中运行。不同容器之间的网络栈是隔离的,减少了横向攻击的风险。
  4. 多容器应用:

    • 对于复杂的应用程序,通常需要多个容器协同工作。通过适当的网络配置,可以确保这些容器之间能够正确地进行通信和协作。
  5. 跨主机通信:

    • 使用覆盖网络(overlay network),容器可以在跨越多个主机的环境中进行通信。这对于构建分布式系统和集群非常有用。
  6. 网络别名和链接:

    • 使用网络别名,可以为容器分配多个名称,从而使得容器可以通过不同的名称进行访问。通过链接,容器可以访问其他容器的网络栈,简化了应用的配置。
  7. 端口映射:

    • Docker允许将容器内部的端口映射到主机上的端口,使得外部系统可以通过主机的IP地址和端口与容器进行通信。
  8. 自定义网络:

    • 创建自定义网络允许用户灵活地配置容器之间的通信方式,而不仅仅依赖于默认的桥接网络。
  9. 网络性能调优:

    • Docker提供了一些网络性能调优选项,用户可以根据应用程序的需求进行调整,以获得更好的性能和吞吐量。

3. 网络配置的主要应用场景

Docker的网络配置主要的应用场景
应用场景 说明
微服务架构

在微服务架构中,各个微服务通常以容器形式部署。Docker的网络配置允许这些微服务通过网络进行通信,实现松耦合的分布式系统。

多容器应用

对于复杂的应用程序,可能需要多个容器协同工作。网络配置使这些容器能够互相通信,协同完成应用程序的各个部分。

容器编排工具

使用容器编排工具如Docker Compose、Kubernetes等时,网络配置是至关重要的。它允许定义多个服务之间的通信方式,以及容器与主机之间的连接规则。

分布式系统和集群

Docker的覆盖网络(overlay network)允许容器在不同主机之间进行通信,从而构建分布式系统和集群。这对于高可用性和容错性至关重要。

服务发现和负载均衡

Docker网络配置使得服务能够注册和发现其他服务,以及通过负载均衡实现请求的分发。这有助于构建可扩展的、具有高可用性的应用。

跨网络通信

当应用程序的不同部分需要在不同的网络中运行时,Docker的网络配置可以帮助建立安全且可靠的通信。

测试和开发环境

在测试和开发过程中,Docker网络配置使得可以轻松地模拟不同的网络条件,包括局域网、互联网等,以确保应用程序在各种环境下都能正常运行。

网络安全

Docker网络配置有助于实现容器之间的隔离,减少横向攻击的风险。通过网络策略和安全组等配置,可以提高容器网络的安全性。

4. 网络相关的知识点

        主要涉及IP 、子网掩码 、网关 、DNS 、端口号等方面

子网掩码

        互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。

        IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。

注意事项: 

        子网掩码是“255.255.255.0”的网络:

        最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。

        子网掩码是“255.255.0.0”的网络:

        后面两个数字可以在0~255范围内任意变化,可以提供255²个IP地址。但是实际可用的IP地址数量是255²-2,即65023个。

        IP地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。

        因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过254台电脑,采用“255.255.255.0”作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此 “255.255.255.0”是最常用的IP地址子网掩码;假如在一所大学具有1500多台电脑,这种规模的局域网可以使用“255.255.0.0”。

 网关

        网关实质上是一个网络通向其他网络的IP地址。

        路由器(Windows下叫默认网关,网关就是路由,路由就是网关不要蒙)

 规则

Docker之网络配置的使用,部署,docker,网络,容器

        计算机的IP地址由两部分组成,一部分为网络标识,一部分为主机标识,同一网段内的计算机网络部分相同,主机部分不同同时重复出现。

        路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的IP地址不会互相重叠,即IP地址具有了唯 一性。

 注意事项:

        在计算机网络中,主机ID全部为0的地址为网络地址,而主机ID全部为1的地址为广播地址这2个地址是不能分配给主机用的

二、docker网络配置

        当你安装了docker,它会自动创建3个网络,可以使用 docker network ls 命令来查看

  • bridge
  • host

Docker之网络配置的使用,部署,docker,网络,容器

 Docker之网络配置的使用,部署,docker,网络,容器

1. 网络模式

        输入指令:docker network ls查看网络模式

Docker之网络配置的使用,部署,docker,网络,容器

1.1 bridge模式

        当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。

        虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。

        bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。

 特点

桥接网络模式的一些主要特点:

  1. 默认网络模式:

    • 当没有明确指定网络模式时,Docker容器默认使用桥接网络模式。这意味着每个容器都有自己的网络命名空间和IP地址,并且可以通过主机的IP地址进行访问。
  2. 容器直接连通:

    • 桥接网络模式允许在同一桥接网络中的容器直接进行通信。这使得在同一主机上运行的多个容器可以通过内部网络进行交流,无需通过外部网络。
  3. 自动分配IP地址:

    • 在桥接网络中,Docker会自动分配给每个容器一个唯一的IP地址。这有助于容器之间的标识和通信。
  4. 主机可访问容器:

    • 容器在桥接网络中分配的IP地址是主机上的一个本地地址。因此,主机可以通过这个本地地址与容器进行通信,这对于某些应用场景非常有用。
  5. 网络隔离:

    • 使用桥接网络模式,每个容器都有独立的网络栈,从而实现了网络隔离。这有助于减少横向攻击的风险,使得容器在相对安全的网络环境中运行。
  6. 端口映射:

    • 桥接网络模式允许将容器内部的端口映射到主机上的端口,使得外部系统可以通过主机的IP地址和端口与容器进行通信。
  7. 容器名解析:

    • Docker通过内置的DNS服务器提供容器名的解析,这意味着容器可以使用其他容器的名称进行通信,而无需依赖IP地址。
  8. 简单易用:

    • 桥接网络模式是最简单且最常见的网络模式之一,适用于大多数单主机部署的应用场景。容易设置和管理,适合开发和测试环境。
 使用演示

        我们现在运行一个容器使用并且运行

Docker之网络配置的使用,部署,docker,网络,容器

        我们查看我们刚才创建的容器状态 

Docker之网络配置的使用,部署,docker,网络,容器

         我们可以在我们的主机上去访问我们虚拟机上的tomcat官网。

Docker之网络配置的使用,部署,docker,网络,容器

        接下来我们模拟两个容器是否能够联通,我们先去除所有的容器,创建两个新的容器。 

Docker之网络配置的使用,部署,docker,网络,容器

Docker之网络配置的使用,部署,docker,网络,容器

         我们尝试使用c1容器去连接c2容器,输入指令:ping+ip地址

 Docker之网络配置的使用,部署,docker,网络,容器

         这说明了在同一个网桥中我们的两个容器可以相互连接。我们接下来实现一个案例,我们先将soft文件夹下的容器清除掉,将我们的一个war拖至soft文件下。

Docker之网络配置的使用,部署,docker,网络,容器

         然后我们运行一个容器

 Docker之网络配置的使用,部署,docker,网络,容器

        我们在主机上的网页上去访问我们的项目 

Docker之网络配置的使用,部署,docker,网络,容器

Docker之网络配置的使用,部署,docker,网络,容器

Docker之网络配置的使用,部署,docker,网络,容器

        由上图可知当我们去访问我们的接口方法的时候网页报500的错误,我们后台也报错了,会报一个无法连接到数据库的错误。 接下来我们需要去安装我们的mysql容器。我们在执行指令之前先创建一个文件夹由于安装mysql数据库。

mkdir -p /mysql/{conf,data}

Docker之网络配置的使用,部署,docker,网络,容器

        创建好对应的文件夹之后,我们切换到对应的文件夹中,我们将我们的 my.cnf复制到我们指定的文件夹中

Docker之网络配置的使用,部署,docker,网络,容器

         我们切换路径到我们的data文件目录下,在该目录下执行创建mysql的命令。

docker run \
> --name m1 \
> -v /mysql/conf/my.cnf:/etc/my.cnf \
> -v /mysql/data:/var/lib/mysql \
> --privileged=true \
> -e MYSQL_ROOT_PASSWORD=123456 \
> -d mysql/mysql-server:5.7

 Docker之网络配置的使用,部署,docker,网络,容器

         我们进入我们的mysql容器,输入指令:docker exec -it 容器名 bash

 Docker之网络配置的使用,部署,docker,网络,容器

         接下来进行我们的数据库登陆操作

 Docker之网络配置的使用,部署,docker,网络,容器

·        我们后续需要远程连接,必须授权一个用户给予所有的权限。执行下列sql语句

赋予权限 

grant all on *.* to yx@'%' identified by '123456';

 Docker之网络配置的使用,部署,docker,网络,容器

         我们退出数据库服务,我们重新启动数据库容器

 Docker之网络配置的使用,部署,docker,网络,容器

         我们进入到soft目录下,修改其文件夹的war文中的yml文件

Docker之网络配置的使用,部署,docker,网络,容器

Docker之网络配置的使用,部署,docker,网络,容器

        我们重新启动一个t1容器,查看日志 

指令:

docker restart 容器名   //重新启动容器

docker logs 容器名    //查看指定容器的日志

        重新访问我们项目的接口方法

Docker之网络配置的使用,部署,docker,网络,容器

         后台会报一个错误

Docker之网络配置的使用,部署,docker,网络,容器

        但是这里又一个问题, 我们先启动t1容器,再启动m1容器时我们在进行访问发现我们的容器端口号发送了改变无法连接。

 Docker之网络配置的使用,部署,docker,网络,容器

Docker之网络配置的使用,部署,docker,网络,容器

Docker之网络配置的使用,部署,docker,网络,容器

        由上图可知我们之前的m1的ip地址是 172.17.0.2,现在是172.17.0.2。因为网桥中我们不能定死我们的ip地址。但是我们的自定义网络可以实现,而且支持自定义ip好自定义容器名的方式。在下面的自定义网络中会讲解器用法。

使用操作
 查看bridge信息
docker inspect bridge
 打开容器
docker run -itd --net=bridge --name cname iname
查看docker0网桥
查看容器网络
ip addr
ifconfig
外部访问

        设置端口映射

docker run -itd --name bridge03 -p 8081:8080 spring:1.0
 图解

Docker之网络配置的使用,部署,docker,网络,容器

1.2 host模式

        Host模式是Docker中的一种网络模式,它与桥接网络模式有所不同。在Host模式下,Docker容器与主机共享网络命名空间,直接使用主机的网络栈,而不是在容器内创建一个新的网络命名空间。

图解
Docker之网络配置的使用,部署,docker,网络,容器
操作命令 
docker run -itd --name host01 --net=host spring:1.0

1.3 自定义网络

使用操作
 创建自定义网络
docker network create 网段 name
删除网络
docker network rm xx
固定ip启动
docker run -itd --name net01 --net mynet --ip 172.18.0.2 spring:1.0
测试
docker exec -it net01 ping net02
跨网桥测试
docker exec -it net01 ping 172.0.0.2
实例说明 

        因为我的网桥模式不能指定ip地址,因此我们使用自定义网络指定ip地址。首先我们创建一个自定义网络。

Docker之网络配置的使用,部署,docker,网络,容器

         我们创建完成之后进行查看网络

 Docker之网络配置的使用,部署,docker,网络,容器

         查看我们自定义网络的网段方便我们后续自定义ip

输入指令:docker inspect 网络名

 Docker之网络配置的使用,部署,docker,网络,容器

         我们启动tomcat容器指定对应的网络和对应的ip地址

 Docker之网络配置的使用,部署,docker,网络,容器

docker run -it \
> --name t1 \
> -p 8080:8080 \
> -v /soft:/usr/local/tomcat/webapps \
> --net mynet \
> --ip 172.20.0.200 \
> ^C
[root@localhost soft]# docker run -it \
> --name t1 \
> -p 8080:8080 \
> -v /soft:/usr/local/tomcat/webapps \
> --net mynet \
> --ip 172.20.0.100 \
> tomcat:8.5.2

 Docker之网络配置的使用,部署,docker,网络,容器

         按住crtl + p和crtl + q 出来目录,我们启动mysql容器指定对应的网络和对应的ip地址

docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
--net mynet \
--ip 172.20.0.200 \
-d mysql/mysql-server:5.7

Docker之网络配置的使用,部署,docker,网络,容器

        我们需要在复制一个容器,因为他们没有ping的命令 

docker run -it \
--name c1 \
--net mynet \
--ip 172.20.100.100 \
-d centos

Docker之网络配置的使用,部署,docker,网络,容器

        我们进入新创建的容器中, 进行连接。

 Docker之网络配置的使用,部署,docker,网络,容器

         我们也可以通过容器名进行连接

 Docker之网络配置的使用,部署,docker,网络,容器

         我们修改数据库连接的配置文件时,不需要知道配置文件在哪里,我们可以使用容器名进行配置。但是前提是在同一个网络中,用一个自定义网络中。

Docker之网络配置的使用,部署,docker,网络,容器

         我们创建一个新的容器c2。

 Docker之网络配置的使用,部署,docker,网络,容器

        此时我们c1是属于自定义网络mynet,c2属于bridge网络。我们在c2中尝试连接c1 

 Docker之网络配置的使用,部署,docker,网络,容器

         接下来我们进行一个操作

输入指令:docker network connect bridge c1

是让c1连接到bridge网络中。

 Docker之网络配置的使用,部署,docker,网络,容器

        我们执行那个命令语句 

 Docker之网络配置的使用,部署,docker,网络,容器

        我们再去查看我们c1的网络状态 

 Docker之网络配置的使用,部署,docker,网络,容器

        我们再去尝试尝试连接我们的c1容器,

Docker之网络配置的使用,部署,docker,网络,容器


 🎉🎉本期的博客分享到此结束🎉🎉

📚📚各位老铁慢慢消化📚📚

🎯🎯下期博客博主会带来新货🎯🎯

🎁三连加关注,阅读不迷路 !🎁

Docker之网络配置的使用,部署,docker,网络,容器文章来源地址https://www.toymoban.com/news/detail-798339.html

到了这里,关于Docker之网络配置的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基础篇:容器化部署技术-—docker,从此摆脱多环境配置的苦恼!

    我们设想这样一个场景,现在 leader 给了你一个任务,让你把开发完毕的应用程序进行打包、分发、部署,要求多平台通用,程序的前后端是单独的工程、后端依赖了 mysql、redis、RabbitMQ 等。按常规的运维思路就是,先将配置好的前后端程序分别打包 -- 将打包文件上传到服务

    2024年02月22日
    浏览(43)
  • Docker网络配置与自定义IP容器通信

    目录 前言 一、docker网络配置 1. bridge 虚拟网桥 2. host 网络模式 3. none 网络模式 4. 自定义container网络模式 二、自定义IP容器通信 1. 自定义IP 2. 创建所需容器(mysql,tomcat) 3. 准备项目资源 4. 构建Nginx实现负载均衡          当项目大规模使用 Docker 时,容器通信的问题也就

    2024年01月25日
    浏览(48)
  • 使用docker容器部署httpd(绝对可用)

    创建文件夹存放httpd的数据和httpd的配置 mkdir -r /install/httpdData 在里面建4个文件   编写 Dockerfile FROM docker.io/centos:7 RUN echo \\\"Asia/Shanghai\\\" /etc/timezone RUN yum -y install httpd RUN mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak COPY run.sh /run.sh RUN chmod 777 /run.sh EXPOSE 80 ENTRYPOINT [ \\\"/run.sh

    2023年04月26日
    浏览(58)
  • 使用 Docker Swarm(集群) 和Docker Stack(堆栈)部署容器化应用

    说到集群,第一个想到的就是k8s,但docker官方也提供了集群和编排解决方案,它允许你将多个 Docker 主机连接在一起,形成一个“群集”(Swarm),并可以在这个 Swarm 上运行和管理你的服务。 与Kubernetes相比,Docker Swarm的群集管理功能相对简单,Swarm更适合于小型到中型的容器

    2024年04月25日
    浏览(35)
  • docker使用容器名实现容器网络互相访问

    docker运行容器的时候没有指定–network 参数,默认是以bridge模式创建,bridge网络表现形式就是docker0这个网络接口。容器默认都是通过docker0这个接口进行通信。也可以通过docker0去和本机的以太网接口连接,这样容器内部才能访问互联网。 但是停止/重启容器之后,容器ip会以谁先

    2024年02月14日
    浏览(35)
  • 【Java】微服务——Docker容器部署(docker安装,docker配置镜像加速,DockerHub,docker基本操作,Dockerfile自定义镜像.Docker-Compose)

    微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1.1.应用部署的环境问题 大型项目组件较多,运

    2024年02月04日
    浏览(56)
  • 【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全、容器部署安全

    作者简介: 辭七七,目前大二,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖    Docker是一个命令行工具,它提供了中央“docker”执行过程中所需的所有工具 。这使得Docker的操作非常简单。

    2024年02月08日
    浏览(49)
  • 2023最新玩客云刷机armbian,部署docker并配置各种常用容器镜像

    刷机开始 (以下刷机教程部分资料来源于:玩客云刷ARMBIAN系统,装DOCKER、PORTAINER、HOME ASSISTANT和QBITTORRENT教程-HEU8)原网提供的教程需要先刷系统到U盘,再把U盘的系统转移到emmc,但是我下面提供的镜像不需要此操作,注意区分。 用到的工具: 双头USB线一根(买或者自己做,

    2024年02月08日
    浏览(78)
  • 在Docker中自定义网络配置,实现容器与主机的连通性

    在Docker中自定义网络配置,实现容器与主机的连通性 【实验步骤】 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 ONBOOT=yes [root@localhost ~]# systemctl restart network [root@localhost ~]# mkdir /opt/centos -p   [root@localhost ~]# mount /dev/cdrom /opt/centos/ mount: /dev/sr0 is write-protected, mounting read-onl

    2024年02月08日
    浏览(41)
  • 使用Docker容器配置ssh服务,远程直接进入容器

    最终版 hub仓库 https://hub.docker.com/ 目录 hub仓库 docker命令 镜像 查看所有镜像 运行镜像 容器 查看所有容器 可以在当前终端挂载 停止容器 删除容器s 使用容器 Docker使用镜像配置ssh服务后用ssh登陆 1. 先上dockerhub上pull一个需要的镜像下来,然后run这个镜像生成一个容器。 2. 进入

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包