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

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

這篇具有很好參考價(jià)值的文章主要介紹了云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)

1 云平臺推薦與基礎(chǔ)操作

①云平臺推薦

  • 國內(nèi):阿里云(ECS)、華為云、騰訊云、青云、百度云等
  • 國外:亞馬遜AWS、微軟Azure等

②公有云、私有云區(qū)別

  • 公有云:第三方云服務(wù)廠商提供和運(yùn)營,使用成本更低,無需維護(hù),無限制的縮放性,高可靠性(N個(gè)9,全年故障時(shí)間)
  • 私有云:自己搭建平臺(服務(wù)器,機(jī)房等);控制力更強(qiáng),數(shù)據(jù)保密性更高

③基礎(chǔ)概念

  • 云服務(wù)器作為應(yīng)用的最終載體
  • VPC為所有云服務(wù)器提供網(wǎng)絡(luò)隔離(類比局域網(wǎng))
  • 所有云服務(wù)器都是綁定某個(gè)私有網(wǎng)絡(luò)
  • 安全組控制每個(gè)服務(wù)器的防火墻規(guī)則
  • 公網(wǎng)IP使用云服務(wù)器上的資源可被大眾訪問
  • 可以通過端口轉(zhuǎn)發(fā)的方式訪問到具體服務(wù)

④實(shí)戰(zhàn)

  1. 自己做實(shí)驗(yàn)的話,如果是不用下載太多軟件盡量選擇按量付費(fèi)
  2. 對于多個(gè)服務(wù)器,可以使用VPC,讓多個(gè)云服務(wù)器之間通過私有ip訪問,避免帶寬浪費(fèi)和網(wǎng)速的限制

2 Docker基礎(chǔ)

2.1 Docker概念

docker解決的問題:
①統(tǒng)一標(biāo)準(zhǔn)

  • 應(yīng)用構(gòu)建
    • 不論是什么語言編寫的,不論是什么版本,都打包為了一個(gè)鏡像;類似于windows上的exe文件,不管什么語言,雙擊就能運(yùn)行
  • 應(yīng)用分享
    • 所有軟件的鏡像都放到了一個(gè)指定的地方 :docker hub,類似于手機(jī)上的應(yīng)用市場
  • 應(yīng)用運(yùn)行
    • 所有鏡像都能直接通過docker run命令一鍵運(yùn)行,類似于windows上的exe文件

②資源隔離

  • cpu、內(nèi)存資源隔離與限制
  • 訪問設(shè)備隔離與限制
  • 網(wǎng)絡(luò)設(shè)備隔離與限制
  • 用戶、用戶組隔離與限制

    比如,黑客攻擊了某個(gè)容器,拿到了容器的root權(quán)限,但是因?yàn)槲覀內(nèi)萜骱退拗鳈C(jī)是隔離的,因此黑客無法影響其他容器或者攻擊我們宿主機(jī)

③docker架構(gòu)及基礎(chǔ)名詞概念
云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

  • Docker_Host:安裝Docker的主機(jī)
  • Docker Daemon:運(yùn)行在Docker主機(jī)上的Docker后臺進(jìn)程
  • Client:操作Docker主機(jī)的客戶端(命令行、UI等)
  • Registry:鏡像倉庫(如:Docker hub)
  • Images:鏡像,帶環(huán)境打包好的程序,可以直接啟動(dòng)運(yùn)行
  • Containers:容器,由鏡像啟動(dòng)起來正在運(yùn)行中的程序

交互邏輯:

安裝好Docker,去鏡像倉庫(類似于軟件市場)尋找鏡像,下載并運(yùn)行,查看容器狀態(tài)日志等排錯(cuò)

2.2 Docker安裝(centos為例)

官方參考文檔:https://docs.docker.com/engine/install/centos/

docker安裝方式:

  • 包管理器
  • 腳本安裝(二進(jìn)制安裝),生產(chǎn)環(huán)境上不推薦使用,會遇到安全和升級等問題
  • 安裝bundle

此處采用包管理器安裝方式

1. 移除以前docker相關(guān)包
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  //或者直接運(yùn)行
  //sudo yum remove docker *
2. 配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3. 安裝docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

#以下是在安裝k8s的時(shí)候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6
4. 配置docker開機(jī)自啟

配置docker開機(jī)自啟,同時(shí)現(xiàn)在啟動(dòng)

systemctl enable docker --now
5. 配置加速(云服務(wù)器)

在自己購買云服務(wù)器的廠商上,找到自己服務(wù)器對應(yīng)的鏡像加速

  • 這里額外添加了docker的生產(chǎn)環(huán)境核心配置cgroup
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

例如:

以阿里云為例,進(jìn)入阿里云官網(wǎng):https://www.aliyun.com/

  • 注冊登錄好自己的賬號
  • 搜索容器鏡像服務(wù)(需要購買,不過個(gè)人可以試用)
  • 然后點(diǎn)擊容器鏡像服務(wù)下的鏡像工具,找到鏡像加速器,根據(jù)自己對應(yīng)的操作系統(tǒng),找到下方對應(yīng)的操作文檔按要求操作即可

2.3 Docker命令實(shí)戰(zhàn)

①獲取鏡像

一般我們獲取鏡像都是從dockerhub倉庫上找。
地址:https://hub.docker.com/

  • 如果公司有私服或者自己搭建了docker倉庫的話,使用自己的也可以
docker pull nginx  #下載最新版

鏡像名:版本名(標(biāo)簽)

docker pull nginx:1.20.1


docker pull redis  #下載最新
docker pull redis:6.2.4

## 下載來的鏡像都在本地
docker images  #查看所有鏡像

redis = redis:latest

docker rmi 鏡像名:版本號/鏡像id

案例具體操作:拉取一個(gè)V1.20.1版本的nginx

# 1. 拉取鏡像
docker pull nginx:1.20.1

# 2. 查看本地鏡像
docker images

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

②啟動(dòng)容器

案例:啟動(dòng)nginx容器,并映射到88端口,測試訪問

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

【docker run  設(shè)置項(xiàng)   鏡像名  】 鏡像啟動(dòng)運(yùn)行的命令(鏡像里面默認(rèn)有的,一般不會寫)

# -d:后臺運(yùn)行
# --restart=always: 開機(jī)自啟
docker run --name=mynginx   -d  --restart=always -p  88:80   nginx

# 查看正在運(yùn)行的容器
docker ps
# 查看所有
docker ps -a
# 刪除停止的容器
docker rm  容器id/名字
docker rm -f mynginx   #強(qiáng)制刪除正在運(yùn)行中的

#停止容器
docker stop 容器id/名字
#再次啟動(dòng)
docker start 容器id/名字

#應(yīng)用開機(jī)自啟
docker update 容器id/名字 --restart=always

案例具體操作:

# -d    后臺啟動(dòng)
# --restart=always 開機(jī)自啟
# -p 88:80 將宿主機(jī)的88端口映射到nginx容器的80端口
# --name=mynginx 指定啟動(dòng)之后的容器名為mynginx
# nginx:1.20.1 啟動(dòng)版本號為1.20.1的nginx
docker run -d --restart=always -p 88:80 --name=mynginx nginx:1.20.1

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

停止容器

# 停止容器[只要能唯一標(biāo)識即可,可以不用輸入全部id]
docker stop bcb

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

③修改容器內(nèi)容

案例:修改nginx默認(rèn)的index.html頁面

1. 進(jìn)入容器內(nèi)部修改
# 進(jìn)入容器內(nèi)部修改[有些可能不是bash是sh,需靈活變化]
# -it 表示進(jìn)入交互頁面
#nginx容器可以當(dāng)做一個(gè)小型的linux,然后里面運(yùn)行了nginx
docker exec -it 容器id /bin/bash

案例:修改nginx的默認(rèn)首頁

  1. docker ps,查看正在運(yùn)行的nginx鏡像,獲取容器id
  2. docker exec -it bcb /bin/bash,進(jìn)入nginx交互頁面
  3. 進(jìn)入nginx的首頁
    cd /usr/share/nginx/html
    修改首頁內(nèi)容:
    echo "this is ziyi's pages, elcomclear > index.html
    云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】
  4. 查看結(jié)果:你的ip+映射端口(宿主機(jī)的)
    云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】
  5. exit退出容器交互頁面
2. 掛載數(shù)據(jù)到外部修改
docker run --name=mynginx   \
-d  --restart=always \
-p  88:80 -v /data/html:/usr/share/nginx/html:ro  \
nginx

# 修改頁面只需要去 主機(jī)的 /data/html
# -v 掛載
/*
/data/html:/usr/share/nginx/html:ro
將容器中的/usr/share/nginx/html掛載到宿主機(jī)的/data/html目錄,ro表示read only只讀
nginx代表nginx:latest鏡像名
*/

指定nginx版本:

docker run -d -p 88:80 -v /data/html:/usr/share/nginx/html --restart=always --name=mynginx nginx:1.20.1

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

④提交改變【數(shù)據(jù)遷移】

我們修改了容器中的內(nèi)容之后,想要打包交給其他電腦去運(yùn)行,此時(shí)就需要將我們修改好之后的鏡像進(jìn)行提交

  1. 提交修改
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# -a "ziyi" 指明是誰修改的
# -m "首頁變化" 指明做了什么
# 341d81f7504f guignginx:v1.0 指明哪個(gè)容器的修改了以及新容器的版本號
docker commit -a "ziyi"  -m "首頁變化" 341d81f7504f guignginx:v1.0

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】
2. 壓縮鏡像并傳輸

# 將鏡像保存成壓縮包
docker save -o abc.tar nginx:v1.0

# 可以通過scp命令遠(yuǎn)程傳輸?shù)街付ǚ?wù)器的指定文件夾下
# 別的機(jī)器加載這個(gè)鏡像
docker load -i abc.tar

# 離線安裝

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

⑤推送到遠(yuǎn)程倉庫

一般我們可以將鏡像推送到docker hub,或者自己搭建平臺

  • docker hub地址:https://hub.docker.com/
  1. 首先,注冊登錄自己的docker hub,然后創(chuàng)建一個(gè)自己的倉庫
    云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】
  2. 打包鏡像并推送到docker hub
# 登錄docker hub,輸入命令然后輸入自己用戶名與密碼
docker login

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

# 打包本地鏡像
# 把舊鏡像的名字,改成倉庫要求的新版名字
docker tag nginx:v1.0 ziyigun/nginx:v1.0

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

效果:

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

使用命令:

# 把舊鏡像的名字,改成倉庫要求的新版名字
docker tag guignginx:v1.0 leifengyang/guignginx:v1.0

# 登錄到docker hub
docker login       

docker logout(推送完成鏡像后退出)

# 推送
docker push leifengyang/guignginx:v1.0

# 別的機(jī)器下載
docker pull leifengyang/guignginx:v1.0
⑥其他命令(docker cp)
docker logs 容器名/id   排錯(cuò)

docker exec -it 容器id /bin/bash

# docker 經(jīng)常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx


#把容器指定位置的東西復(fù)制出來 
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf
#把外面的內(nèi)容復(fù)制到容器里面
docker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf

測試docker cp,復(fù)制命令:

云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】

2.4 進(jìn)階實(shí)戰(zhàn)【部署自己的鏡像】

2.4.1 部署鏡像

例如:我們編寫一個(gè)簡單的統(tǒng)計(jì)訪問量的java應(yīng)用
通過Spring官網(wǎng)構(gòu)建SpringBoot:https://start.spring.io/

  1. 編寫代碼
  2. 將應(yīng)用打包成鏡像

編寫Dockerfile將自己的應(yīng)用打包成鏡像

# 基礎(chǔ)環(huán)境,運(yùn)行java需要jdk
FROM openjdk:8-jdk-slim
# 作者名
LABEL maintainer=ziyi
#將target目錄下maven打包好的jar包復(fù)制為app.jar
COPY target/*.jar   /app.jar
# 運(yùn)行jar包的腳本命令
ENTRYPOINT ["java","-jar","/app.jar"]

以前(以java為例):
● SpringBoot打包成可執(zhí)行jar
● 把jar包上傳給服務(wù)
● 服務(wù)器運(yùn)行java -jar


現(xiàn)在:
●所有機(jī)器都安裝Docker,任何應(yīng)用都是鏡像,所有機(jī)器都可以運(yùn)行

  1. 運(yùn)行鏡像
# -t 是指標(biāo)簽名稱
docker build -t java-demo:v1.0 .
2.4.2 拓展【上傳到dockerhub】

每個(gè)應(yīng)用每次打包,都需要本地編譯、再上傳服務(wù)器、再進(jìn)行docker構(gòu)建,如果有1000個(gè)應(yīng)用要打包鏡像怎么辦?有沒有更好的方式?

  • 上傳到dockerhub或其他鏡像倉庫
  1. 本地打上標(biāo)簽
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 
  1. 上傳鏡像到dockerhub
# 登錄docker hub
docker login

#給舊鏡像起名
docker tag java-demo:v1.0  leifengyang/java-demo:v1.0

# 推送到docker hub
docker push leifengyang/java-demo:v1.0

# 別的機(jī)器
docker pull leifengyang/java-demo:v1.0

# 別的機(jī)器運(yùn)行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

其他:部署中間件

部署一個(gè)Redis+應(yīng)用,嘗試應(yīng)用操作Redis產(chǎn)生數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-441208.html

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

#redis使用自定義配置文件啟動(dòng)

docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf


到了這里,關(guān)于云原生技術(shù)架構(gòu)分析+實(shí)戰(zhàn)【docker篇】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 云原生架構(gòu)設(shè)計(jì)原則及典型技術(shù)

    云原生架構(gòu)設(shè)計(jì)原則及典型技術(shù)

    云原生是面向云應(yīng)用設(shè)計(jì)的一種思想理念,充分發(fā)揮云效能的最佳實(shí)踐路徑,幫助企業(yè)構(gòu)建彈性可靠、松耦合、易管理可觀測的應(yīng)用系統(tǒng),提升交付效率,降低運(yùn)維復(fù)雜度。代表技術(shù)包括不可變基礎(chǔ)設(shè)施、服務(wù)網(wǎng)格、聲明式 API 及 Serverless 等。 從產(chǎn)業(yè)效用方面來看,云原生極

    2024年02月11日
    瀏覽(29)
  • 技術(shù)風(fēng)向標(biāo) | 云原生技術(shù)架構(gòu)成熟度模型解讀

    從“上云”到“云上”原生,云原生提供了最優(yōu)用云路徑,云原生的技術(shù)價(jià)值已被廣泛認(rèn)可。當(dāng)前行業(yè)用戶全面轉(zhuǎn)型云原生已是大勢所趨,用戶側(cè)云原生平臺建設(shè)和應(yīng)用云原生化改造進(jìn)程正在加速。 云原生復(fù)雜的技術(shù)棧和傳統(tǒng)IT的歷史包袱給用戶帶來了巨大挑戰(zhàn),針對平臺建

    2024年02月02日
    瀏覽(25)
  • 探索云原生時(shí)代:技術(shù)驅(qū)動(dòng)的業(yè)務(wù)架構(gòu)革新

    探索云原生時(shí)代:技術(shù)驅(qū)動(dòng)的業(yè)務(wù)架構(gòu)革新

    云原生技術(shù)正重塑IT領(lǐng)域,本文深度剖析了其發(fā)展歷程、核心概念、生態(tài)系統(tǒng)及實(shí)踐案例,展望未來趨勢,揭示了這一技術(shù)如何引領(lǐng)企業(yè)轉(zhuǎn)型與創(chuàng)新。 關(guān)注【TechLeadCloud】,分享互聯(lián)網(wǎng)架構(gòu)、云服務(wù)技術(shù)的全維度知識。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗(yàn)、團(tuán)隊(duì)管理

    2024年03月22日
    瀏覽(22)
  • 【云原生】Docker 詳解(二):Docker 架構(gòu)及工作原理

    【云原生】Docker 詳解(二):Docker 架構(gòu)及工作原理

    Docker 在運(yùn)行時(shí)分為 Docker 引擎 (服務(wù)端守護(hù)進(jìn)程) 和 客戶端工具 ,我們?nèi)粘J褂酶鞣N docker 命令 ,其實(shí)就是在使用 客戶端工具 與 Docker 引擎 進(jìn)行交互。 Docker 是一個(gè)客戶端-服務(wù)器(C/S)架構(gòu)程序。Docker 客戶端只需要向 Docker 服務(wù)器或者守護(hù)進(jìn)程發(fā)出請求,服務(wù)器或者守護(hù)

    2024年02月13日
    瀏覽(17)
  • 【Quarkus技術(shù)系列】「云原生架構(gòu)體系」在云原生時(shí)代下的Java“拯救者”是Quarkus,那云原生是什么呢?

    【Quarkus技術(shù)系列】「云原生架構(gòu)體系」在云原生時(shí)代下的Java“拯救者”是Quarkus,那云原生是什么呢?

    云原生時(shí)代下的Java\\\"拯救者\(yùn)\\" 在云原生時(shí)代,其實(shí)Java程序是有很大的劣勢的,以最流行的spring boot/spring cloud微服務(wù)框架為例,啟動(dòng)一個(gè)已經(jīng)優(yōu)化好,很多bean需要lazy load的application至少需要3-4秒時(shí)間,內(nèi)存需要幾百M(fèi),業(yè)務(wù)邏輯稍微復(fù)雜一點(diǎn)點(diǎn),沒有1G以上的內(nèi)存是很難滿足業(yè)務(wù)

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

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

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

    2024年02月11日
    瀏覽(22)
  • 云原生系列之docker的容器管理實(shí)戰(zhàn)

    之前我們已經(jīng)探討過了docker的鏡像,看了下時(shí)間,距離上次介紹容器的鏡像已經(jīng)過去兩個(gè)月了, 如果你已經(jīng)忘記了,可以直奔專欄:容器管理 從今天開始,我們要探討docker 的容器了,docker的容器都是從鏡像開始創(chuàng)建的,涉及到的操作有: 創(chuàng)建容器,停止容器,進(jìn)入容器,刪

    2024年02月10日
    瀏覽(20)
  • 【云原生】1.3 Docker 常用命令實(shí)戰(zhàn)(上)

    【云原生】1.3 Docker 常用命令實(shí)戰(zhàn)(上)

    哈嘍~大家好呀,上兩篇呢我們講了云原生的概念以及Docker基本概念,通過這兩篇的學(xué)習(xí)之后我們對云原生有了一定的了解,這篇呢我們來看看“ Docker命令實(shí)戰(zhàn) ” 吧。 ???個(gè)人主頁:個(gè)人主頁?????? ? ? ? ? ?? ???系列專欄:【云原生系列】 ??與這篇相關(guān)的文章:

    2023年04月08日
    瀏覽(16)
  • 【云原生丶Docker】虛擬化技術(shù)簡介

    【云原生丶Docker】虛擬化技術(shù)簡介

    Docker 是一款基于容器虛擬化技術(shù)構(gòu)建的軟件,那到底什么虛擬化技術(shù)呢?在學(xué)習(xí) Docker 之前,先簡單了解下虛擬化技術(shù)。 虛擬化是云原生的實(shí)現(xiàn)基礎(chǔ),它能夠幫助我們更加有效地利用物理計(jì)算機(jī)硬件。 虛擬化技術(shù) 是一種將物理資源抽象為虛擬資源,并將虛擬的計(jì)算機(jī)資源提

    2024年02月11日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包