国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

云原生個(gè)人線路 Docker容器化

這篇具有很好參考價(jià)值的文章主要介紹了云原生個(gè)人線路 Docker容器化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

聲明:此文章為博主個(gè)人學(xué)習(xí)記錄,僅供學(xué)習(xí)和交流,如有侵權(quán)請(qǐng)聯(lián)系博主。

Docker

基于Linux 內(nèi)核的Cgroup,Namespace,以及Union FS等技術(shù),對(duì)進(jìn)程進(jìn)行封裝隔離,屬于操作系統(tǒng)層面的虛擬化技術(shù),由于隔離的進(jìn)程獨(dú)立于宿主和其它的隔離的進(jìn)程,因此也稱其為容器。

最初實(shí)現(xiàn)是基于LXC,從0.7 以后開始去除LXC,轉(zhuǎn)而使用自行開發(fā)的Libcontainer,從1.11開始,則進(jìn)一步演進(jìn)為使用runC和Containerd。

Docker 在容器的基礎(chǔ)上,進(jìn)行了進(jìn)一步的封裝,從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等等,極大的簡(jiǎn)化了容器的創(chuàng)建和維護(hù),使得Docker 技術(shù)比虛擬機(jī)技術(shù)更為輕便、快捷。

安裝docker

基于ubuntu

基于Centos7

基于ubuntu

更新apt包索引并安裝允許apt使用HTTPS倉(cāng)庫(kù)的軟件包
$ sudo apt-get update
$ sudo apt-get install \\
  ca-certificates \\
  curl \\
  gnupg \\
  lsb-release
  
添加Docker的官方GPG密鑰
$ sudo mkdir -m 0755 -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

寫入阿里云鏡像源地址
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

更新apt包索引
sudo apt-get update

安裝Docker Engine、containerd和Docker Compose
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

基于Centos7

安裝最新內(nèi)核版本

#查看系統(tǒng)版本
cat /etc/redhat-release
#查看當(dāng)前系統(tǒng)的內(nèi)核:
uname -sr
#在 CentOS 7.x 上啟用 ELRepo 倉(cāng)庫(kù):
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

#查看可用的系統(tǒng)內(nèi)核相關(guān)包:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

#安裝最新主線內(nèi)核版本:
yum -y --enablerepo=elrepo-kernel install kernel-ml

#設(shè)置默認(rèn)內(nèi)核版本
vi /etc/default/grub
修改GRUB_DEFAULT=0

#重新創(chuàng)建內(nèi)核配置
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

docker環(huán)境和組件安裝

#卸載舊版本docker
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

#gcc
yum -y install gcc
yum -y install gcc-c++

#安裝yum工具包
yum -y install yum-utils

#設(shè)置阿里云的stable 鏡像倉(cāng)庫(kù)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#更新 yum 軟件包索引
yum makecache fast

#安裝指定版本的 Docker(v20.10.8):
yum -y install docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-1:20.10.8-3.el7.x86_64 containerd.io

systemctl start docker
systemctl enable docker

#查看docker狀態(tài):
systemctl status docker
docker version

#鏡像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],	
  "registry-mirrors": [
    "https://du3ia00u.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://registry.docker-cn.com"
  ],
  "live-restore": true,
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"},
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "storage-driver": "overlay2" 
}
EOF

#使之生效
systemctl daemon-reload

#重啟docker
systemctl restart docker

容器操作

常見命令

docker pull image:tag

docker run 啟動(dòng)并創(chuàng)建容器
	--name 容器名
	--rm 退出自動(dòng)刪除
	-it 交互
	-d 后臺(tái)
	-p 端口映射
	-v 磁盤掛載

docker start container 啟動(dòng)容器

docker stop container 停止

docker ps -a 查看全部容器

docker exec -it image /bin/bash 進(jìn)入容器

docker inspect image 查看容器信息

docker cp local:docker 拷貝文件到容器

docker images 查看鏡像

Dockerfile

基本結(jié)構(gòu)

FROM:指定基礎(chǔ)鏡像。
RUN:在鏡像中運(yùn)行命令。
CMD:指定容器啟動(dòng)時(shí)要運(yùn)行的命令。
LABEL:為鏡像添加元數(shù)據(jù)。
EXPOSE:指定容器要暴露的端口。
ENV:設(shè)置環(huán)境變量。
ADD:將文件從構(gòu)建上下文或 URL 復(fù)制到鏡像中。
COPY:將文件從構(gòu)建上下文復(fù)制到鏡像中。
ENTRYPOINT:指定容器啟動(dòng)時(shí)要運(yùn)行的命令,可以與 CMD 配合使用。
VOLUME:創(chuàng)建掛載點(diǎn),用于掛載外部卷。
USER:指定運(yùn)行容器時(shí)要使用的用戶。
WORKDIR:設(shè)置工作目錄。
最佳實(shí)踐
  • 不要安裝無效軟件包。

  • 應(yīng)簡(jiǎn)化鏡像中同時(shí)運(yùn)行的進(jìn)程數(shù),理想狀況下,每個(gè)鏡像應(yīng)該只有一個(gè)進(jìn)程,當(dāng)無法避免同一鏡像運(yùn)行多進(jìn)程時(shí),應(yīng)選擇合理的初始化進(jìn)程(initprocess)。

  • 最小化層級(jí)數(shù)。

    • 最新的docker只有RUN,COPY,ADD創(chuàng)建新層,其他指令創(chuàng)建臨時(shí)層,不會(huì)增加鏡像大小,比如EXPOSE指令就不會(huì)生成新層。

    • 多條RUN命令可通過連接符連接成一條指令集以減少層數(shù)。

    • 通過多段構(gòu)建減少鏡像層數(shù)。

  • 把多行參數(shù)按字母排序,可以減少可能出現(xiàn)的重復(fù)參數(shù),并且提高可讀性。

  • 編寫dockerfile的時(shí)候,應(yīng)該把變更頻率低的編譯指令優(yōu)先構(gòu)建以便放在鏡像底層以有效利用buildcache。

  • 復(fù)制文件時(shí),每個(gè)文件應(yīng)獨(dú)立復(fù)制,這確保某個(gè)文件變更時(shí),只影響改文件對(duì)應(yīng)的緩存。

Makefile文件

以go項(xiàng)目為示例

# 設(shè)置項(xiàng)目根目錄
ROOT := $(shell pwd)

# 設(shè)置編譯生成的可執(zhí)行文件名
BINARY := myapp

# 設(shè)置編譯選項(xiàng)
GOFLAGS := -ldflags="-s -w"

# 設(shè)置遠(yuǎn)程倉(cāng)庫(kù)地址
REPO := myrepo/myapp

# 設(shè)置版本號(hào)
VERSION := 1.0.0

# 默認(rèn)目標(biāo)
all: build

# 編譯目標(biāo)
build:
    go build $(GOFLAGS) -o $(BINARY) main.go

# 發(fā)布目標(biāo)
release: build
    tar czf $(BINARY)-$(VERSION).tar.gz $(BINARY)

# 推送目標(biāo)
push: release
    scp $(BINARY)-$(VERSION).tar.gz $(REPO)

# 清理目標(biāo)
clean:
    rm -f $(BINARY)
    rm -f $(BINARY)-*.tar.gz

.PHONY: all build release push clean

擴(kuò)展

build構(gòu)建本地鏡像并上傳到dockerhub

需要注冊(cè)docker 賬號(hào)

構(gòu)建鏡像 -o 指定鏡像名
docker build -t imagename .

查看鏡像
docker images

登錄 輸入賬號(hào)密碼
docker login

打包
docker tag tagname your_dockerhub_name/imagename

push到dockerhub倉(cāng)庫(kù)
docker push your_dockerhub_name/imagename
通用鏡像

推薦使用這三個(gè)通用鏡像:ubuntu:latest、debian:slim 和 alpine:latest

云原生個(gè)人線路 Docker容器化

Ubuntu/Debian

Ubuntu 和 Debian 是綜合能力非常強(qiáng)的 Linux 發(fā)行版,非常適合作為通用鏡像使用,它們主要的優(yōu)點(diǎn)如下。

  • 支持的軟件包眾多。
  • 鏡像體積較小。
  • 用戶數(shù)量大,社區(qū)活躍,容易及時(shí)發(fā)現(xiàn)和修復(fù)安全問題。
  • 相比較 Alpine 具有更通用的 C 語(yǔ)言標(biāo)準(zhǔn)庫(kù) glibc。
  • 文檔和教程豐富。

Alpine

我們?cè)賮砜戳硪环N通用鏡像 Alpine。在很長(zhǎng)的時(shí)間里,Alpine 發(fā)行版并沒有受到太多的關(guān)注。直到 Docker 時(shí)代,大家為了追求更小的鏡像體積才開始大量使用 Alpine 鏡像。相比較 Debian,Alpine 有下面這些優(yōu)點(diǎn)。

  • 快速的包安裝體驗(yàn)。
  • 極小的鏡像體積。
  • 只包含少量的系統(tǒng)級(jí)程序,安全性更高。
  • 更輕量的初始化系統(tǒng) OpenRC。
專用鏡像

各種編程語(yǔ)言鏡像

初學(xué)使用發(fā)行版linux,盡量不要用Alpine,c庫(kù)不一樣

對(duì)Alpine,Dockerfile編譯過程中指定 CGO_ENABLED=0

相關(guān)理論簡(jiǎn)介 (可跳過)

容器標(biāo)準(zhǔn)

?Open Container Initiative(OCI)

? ?輕量級(jí)開放式管理組織(項(xiàng)目)

?OCI主要定義兩個(gè)規(guī)范

? ?Runtime Specification

? ?文件系統(tǒng)包如何解壓至硬盤,共運(yùn)行時(shí)運(yùn)行。

?Image Specification

?如何通過構(gòu)建系統(tǒng)打包,生成鏡像清單(Manifest)、文件系統(tǒng)序列化文件、鏡像配置。

Namespace

Linux Namespace是一種Linux Kernel提供的資源隔離方案:

? ?系統(tǒng)可以為進(jìn)程分配不同的Namespace;

? ?并保證不同的Namespace資源獨(dú)立分配、進(jìn)程彼此隔離,即不同的Namespace下的進(jìn)程互不干擾。

多種namespace互相隔離

? IPC,Network,PID,Mount,UTS,USER

相關(guān)命令
查看當(dāng)前系統(tǒng)的namespace:
lsns –t <type>

查看某進(jìn)程的namespace:
ls -la /proc/<pid>/ns/

進(jìn)入某namespace運(yùn)行命令:
nsenter -t <pid> -n ip addr

Cgroup

?Cgroups(Control Groups)是Linux下用于對(duì)一個(gè)或一組進(jìn)程進(jìn)行資源控制和監(jiān)控的機(jī)制。

?可以對(duì)諸如CPU使用時(shí)間、內(nèi)存、磁盤I/O等進(jìn)程所需的資源進(jìn)行限制。

?不同資源的具體管理工作由相應(yīng)的Cgroup子系統(tǒng)(Subsystem)來實(shí)現(xiàn)。

?針對(duì)不同類型的資源限制,只要將限制策略在不同的的子系統(tǒng)上進(jìn)行關(guān)聯(lián)即可。

?Cgroups在不同的系統(tǒng)資源管理子系統(tǒng)中以層級(jí)樹(Hierarchy)的方式來組織管理:每個(gè)Cgroup都可以包含其他的子Cgroup,因此子Cgroup能使用的資源除了受本Cgroup配置的資源參數(shù)限制,還受到父Cgroup設(shè)置的資源限制。

文件系統(tǒng) Union FS

?將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)的文件系統(tǒng)

?支持為每一個(gè)成員目錄(類似GitBranch)設(shè)定readonly、readwrite和whiteout-able 權(quán)限

?文件系統(tǒng)分層, 對(duì)readonly權(quán)限的branch 可以邏輯上進(jìn)行修改(增量地, 不影響readonly部分的)

?通常Union FS 有兩個(gè)用途, 一方面可以將多個(gè)disk掛到同一個(gè)目錄下, 另一個(gè)更常用的就是將一個(gè)readonly的branch 和一個(gè)writeable 的branch 聯(lián)合在一起

docker的文件系統(tǒng)

典型的Linux文件系統(tǒng)組成:

  • Bootfs(boot file system)
    • Bootloader 引導(dǎo)加載kernel
    • Kernel 當(dāng)kernel被加載到內(nèi)存中后umountbootfs。

rootfs(root file system)

  • /dev,/proc,/bin,/etc等標(biāo)準(zhǔn)目錄和文件。

  • 對(duì)于不同的linux發(fā)行版, bootfs基本是一致的,但rootfs會(huì)有差別。

docker啟動(dòng)過程

Linux

  • 在啟動(dòng)后,首先將rootfs設(shè)置為readonly, 進(jìn)行一系列檢查, 然后將其切換為“readwrite”供用戶使用。

Docker啟動(dòng)

  • 初始化時(shí)也是將rootfs以readonly方式加載并檢查,然而接下來利用union mount 的方式將一個(gè)readwrite文件系統(tǒng)掛載在readonly的rootfs之上,復(fù)用rootfs。

  • 并且允許再次將下層的FS(file system)設(shè)定為readonly并且向上疊加。

  • 這樣一組readonly和一個(gè)writeable的結(jié)構(gòu)構(gòu)成一個(gè)container的運(yùn)行時(shí)態(tài), 每一個(gè)FS被稱作一個(gè)FS層。

OCI容器標(biāo)準(zhǔn)

Open Container Initiative

  • OCI組織于2015年創(chuàng)建,是一個(gè)致力于定義容器鏡像標(biāo)準(zhǔn)和運(yùn)行時(shí)標(biāo)準(zhǔn)的開放式組織。

  • OCI定義了鏡像標(biāo)準(zhǔn)(Runtime Specification)、運(yùn)行時(shí)標(biāo)準(zhǔn)(Image Specification)和分發(fā)標(biāo)準(zhǔn)(DistributionSpecification)

    • 鏡像標(biāo)準(zhǔn)定義應(yīng)用如何打包
    • 運(yùn)行時(shí)標(biāo)準(zhǔn)定義如何解壓應(yīng)用包并運(yùn)行
    • 分發(fā)標(biāo)準(zhǔn)定義如何分發(fā)容器鏡像

Docker 12-Factor

12-Factor 應(yīng)用是一種用于構(gòu)建軟件即服務(wù)(SaaS)應(yīng)用的方法論。它提供了 12 個(gè)因素,用來指導(dǎo)開發(fā)人員如何構(gòu)建可擴(kuò)展、可維護(hù)和可移植的應(yīng)用程序。這些因素包括:文章來源地址http://www.zghlxwxcb.cn/news/detail-425413.html

  1. 代碼庫(kù):應(yīng)用程序應(yīng)該有一個(gè)代碼庫(kù),并使用版本控制系統(tǒng)進(jìn)行管理。
  2. 依賴:應(yīng)用程序應(yīng)該顯式聲明并隔離其依賴關(guān)系。
  3. 配置:應(yīng)用程序的配置應(yīng)該存儲(chǔ)在環(huán)境變量中,而不是硬編碼到代碼中。
  4. 后端服務(wù):應(yīng)用程序應(yīng)該將后端服務(wù)(如數(shù)據(jù)庫(kù))視為附加資源,并通過 URL 來訪問。
  5. 構(gòu)建、發(fā)布、運(yùn)行:應(yīng)用程序的構(gòu)建、發(fā)布和運(yùn)行階段應(yīng)該嚴(yán)格分離。
  6. 進(jìn)程:應(yīng)用程序應(yīng)該以一個(gè)或多個(gè)無狀態(tài)進(jìn)程的形式執(zhí)行。
  7. 端口綁定:應(yīng)用程序應(yīng)該通過端口綁定來提供服務(wù)。
  8. 并發(fā):應(yīng)用程序應(yīng)該通過進(jìn)程模型來實(shí)現(xiàn)擴(kuò)展。
  9. 可處理性:應(yīng)用程序應(yīng)該能夠快速啟動(dòng)并優(yōu)雅地關(guān)閉。
  10. 開發(fā)/生產(chǎn)環(huán)境等價(jià)性:應(yīng)用程序的開發(fā)、預(yù)發(fā)布和生產(chǎn)環(huán)境應(yīng)該盡可能相似。
  11. 日志:應(yīng)用程序應(yīng)該將日志視為事件流,并通過標(biāo)準(zhǔn)輸出進(jìn)行輸出。
  12. 管理進(jìn)程:應(yīng)用程序的管理/運(yùn)維任務(wù)應(yīng)該作為一次性進(jìn)程運(yùn)行。

到了這里,關(guān)于云原生個(gè)人線路 Docker容器化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 云原生之使用Docker部署homarr個(gè)人導(dǎo)航頁(yè)

    云原生之使用Docker部署homarr個(gè)人導(dǎo)航頁(yè)

    homarr可作為網(wǎng)站書簽導(dǎo)航頁(yè)工具,Homarr也是一個(gè)時(shí)尚、現(xiàn)代的儀表板,可讓您的所有應(yīng)用程序和服務(wù)觸手可及。使用Homarr,您可以在一個(gè)方便的位置訪問和控制所有內(nèi)容。 ??? 通過廣泛的拖放網(wǎng)格系統(tǒng)高度可定制 ?與您喜愛的自托管應(yīng)用程序無縫集成 ??簡(jiǎn)單快速的應(yīng)用程

    2024年02月07日
    瀏覽(21)
  • 云原生之使用Docker部署Dashy個(gè)人導(dǎo)航頁(yè)

    云原生之使用Docker部署Dashy個(gè)人導(dǎo)航頁(yè)

    Dashy是一款開源的個(gè)人導(dǎo)航頁(yè)。它是一個(gè)集成了多個(gè)網(wǎng)站的頁(yè)面,在這個(gè)頁(yè)面上,你可以快速訪問你經(jīng)常使用的網(wǎng)站。Dashy具有高度的自定義性,你可以自己添加和刪除網(wǎng)站,也可以自己更換主題和背景。 Dashy個(gè)人導(dǎo)航頁(yè)的特點(diǎn)包括: 美觀簡(jiǎn)潔:Dashy個(gè)人導(dǎo)航頁(yè)的界面設(shè)計(jì)簡(jiǎn)潔

    2024年02月10日
    瀏覽(20)
  • Docker容器學(xué)習(xí):搭建ownCloud個(gè)人網(wǎng)盤

    Docker容器學(xué)習(xí):搭建ownCloud個(gè)人網(wǎng)盤

    目錄 前提環(huán)境 拉取鏡像 創(chuàng)建容器 創(chuàng)建mysql容器: 創(chuàng)建OwnCloud容器,并連接到數(shù)據(jù)庫(kù): 創(chuàng)建Nginx容器: 配置nignx 基于Centos7.9版本環(huán)境安裝Docker-ce:24.0.5 但是值得注意的是OwnCloud自帶有Web功能,所以不使用Nginx一樣是可行的! 如果你想要添加SSL實(shí)現(xiàn)保密傳輸,那可能就需要一些

    2024年02月11日
    瀏覽(28)
  • 云原生Docker容器管理

    目錄 docker容器的管理 容器創(chuàng)建 ?查看容器的運(yùn)行狀態(tài) 啟動(dòng)容器 創(chuàng)建并啟動(dòng)容器? 終止容器運(yùn)行 ?刪除容器 ?容器的進(jìn)入 ?查看容器詳細(xì)信息 復(fù)制到容器中 從容器復(fù)制文件到主機(jī) 容器的導(dǎo)出與導(dǎo)入 導(dǎo)出 ?導(dǎo)入 相當(dāng)于一個(gè)進(jìn)程,性能接近于原生,幾乎沒有損耗; docker容器在

    2024年02月07日
    瀏覽(22)
  • 容器和云原生(二):Docker容器化技術(shù)

    容器和云原生(二):Docker容器化技術(shù)

    ? 目錄 Docker容器的使用 Docker容器關(guān)鍵技術(shù) Namespace? Cgroups UnionFS ? ? ? ? 首先直觀地了解docker如何安裝使用,并快速啟動(dòng)mysql服務(wù)的,啟動(dòng)時(shí)候綁定主機(jī)上的3306端口,查找mysql容器的ip,使用mysql -h containerIP 或者127.0.0.1就可以直接訪問mysql服務(wù),暫不考慮mysql的存儲(chǔ)卷。 ???

    2024年02月12日
    瀏覽(23)
  • 『 云原生·Docker』Docker容器相關(guān)操作(二)

    本系列主要分為以下六大部分,正在更新中,盡請(qǐng)期待! 『 云原生·生之門』 『 云原生·前置知識(shí)』 『 云原生·Docker』 『 云原生·Kubernetes』 『 云原生·KubeSphere』 『 云原生·DevOps』 ??點(diǎn)擊關(guān)注本專欄 提示:已經(jīng)更新的或正在更新的文章前面打勾了哈! 容器是 Docker的另一個(gè)

    2024年02月06日
    瀏覽(23)
  • 云原生——Docker容器化實(shí)戰(zhàn)

    云原生——Docker容器化實(shí)戰(zhàn)

    ??作者介紹:奇妙的大歪?? ??個(gè)人名言:但行前路,不負(fù)韶華!?? ?? 個(gè)人簡(jiǎn)介:云計(jì)算網(wǎng)絡(luò)運(yùn)維專業(yè)人員 ?? 前言 ? ? ? ?\\\"Docker\\\"一詞指代了多個(gè)概念,包括開源社區(qū)項(xiàng)目、開源項(xiàng)目使用的工具、主導(dǎo)支持此類項(xiàng)目的公司 Docker Inc.,以及該公司官方支持的工具。這些

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包