自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Couchbase Server:Docker云上手指南

譯文
云計(jì)算
在今天的文章中,我們將了解Docker Cloud中的各重要概念,并探討如何利用Couchbase Server承載Docker鏡像。

  首先直奔主題,看看Docker Cloud的幾大關(guān)鍵性功能:

  • 利用Docker ID進(jìn)行驗(yàn)證
  • 集成Docker Hub
  • 支持Docker官方庫(kù)
  • 為Docker Engine提供商用支持
  • 能夠利用GUI、API及CLI部署并擴(kuò)展應(yīng)用
  • [[167578]]

而在今天的文章中,我們將探討:

  • Docker Cloud各核心概念
  • 如何創(chuàng)建一個(gè)新的Docker Cloud節(jié)點(diǎn)
  • 如何安裝Docker Cloud CLI
  • 如何創(chuàng)建一項(xiàng)新的Docker Cloud服務(wù)
  • 在Docker Cloud中訪問Couchbase Server
  • 如何終止Docker Cloud服務(wù)與節(jié)點(diǎn)

最后,我們還將共享部分Docker Cloud參考文檔。

本文將使用Couchbase Server——一套面向Docker鏡像的開源、高擴(kuò)展性、JSON文件數(shù)據(jù)庫(kù)。

Docker Cloud簡(jiǎn)要介紹

下面來看如何在Amazon中利用Docker Cloud運(yùn)行Docker鏡像:

  1. brew install docker-cloud 
  2.  
  3. docker-cloud nodecluster create -t 1 --tag couchbase couchbase-node aws us-west-1 m3.large 
  4.  
  5. docker-cloud service create --tag couchbase -p 8091:8091 -p 8092:8092 -p 8093:8093 -p 11210:11210 arungupta/couchbase 
  6.  
  7. docker-cloud service start {SERVICE_ID} 
  8.  
  9. docker-cloud service inspect {SERVICE_ID} | jq ".container_ports[0].endpoint_uri" | sed 's/tcp/http/g' 

接著開始具體探討。

Docker Cloud各核心概念

  • 節(jié)點(diǎn)即用于部署及運(yùn)行應(yīng)用的各獨(dú)立Linux主機(jī)/虛擬機(jī)。用戶可配置更多新節(jié)點(diǎn)以提升容量。Docker Cloud并不提供托管服務(wù)。各節(jié)點(diǎn)利用物理服務(wù)器、虛擬機(jī)或者云服務(wù)供應(yīng)商進(jìn)行配置。
  • 節(jié)點(diǎn)集群屬于同類節(jié)點(diǎn)的邏輯組。節(jié)點(diǎn)集群允許我們通過配置更多節(jié)點(diǎn)輕松實(shí)現(xiàn)基礎(chǔ)設(shè)施規(guī)模擴(kuò)展。
  • 服務(wù)為來自同一鏡像的容器邏輯組。服務(wù)能夠輕松將應(yīng)用擴(kuò)展至各不同節(jié)點(diǎn)當(dāng)中。

Docker Cloud可通過Web、CLI或者REST API進(jìn)行托管。本文將利用Docker Cloud CLI執(zhí)行各項(xiàng)命令。

安裝Docker Cloud CLI

安裝Docker Cloud CLI:

  1. brew install docker-cloud 
  2.  
  3. ==> Downloading https://homebrew.bintray.com/bottles/docker-cloud-1.0.2.yosemite.bottle.tar.gz 
  4.  
  5. Already downloaded: /Library/Caches/Homebrew/docker-cloud-1.0.2.yosemite.bottle.tar.gz 
  6.  
  7. ==> Pouring docker-cloud-1.0.2.yosemite.bottle.tar.gz 
  8.  
  9. �� /usr/local/Cellar/docker-cloud/1.0.2482 files, 4.1M 

更為完整的安裝操作請(qǐng)參閱“安裝CLI”一文。

檢查版本:

  1. docker-cloud -v 
  2.  
  3. docker-cloud 1.0.2 

完整的命令內(nèi)容如下:

  1. usage: docker-cloud [-h] [-v] 
  2.  
  3. {action,container,event,exec,login,node,nodecluster,repository,run,service,stack,tag,trigger,up} 
  4.  
  5. ... 
  6.  
  7. Docker Cloud CLI 
  8.  
  9. optional arguments: 
  10.  
  11. -h, --help show this help message and exit 
  12.  
  13. -v, --version show program's version number and exit 
  14.  
  15. Docker Cloud CLI commands: 
  16.  
  17. {action,container,event,exec,login,node,nodecluster,repository,run,service,stack,tag,trigger,up} 
  18.  
  19. action Action-related operations 
  20.  
  21. container Container-related operations 
  22.  
  23. event Get real time Docker Cloud events 
  24.  
  25. exec Run a command in a running container 
  26.  
  27. login Please use "docker login" to log into Docker Cloud 
  28.  
  29. node Node-related operations 
  30.  
  31. nodecluster NodeCluster-related operations 
  32.  
  33. repository Repository-related operations 
  34.  
  35. run Create and run a new service 
  36.  
  37. service Service-related operations 
  38.  
  39. stack Stack-related operations 
  40.  
  41. tag Tag-related operations 
  42.  
  43. trigger Trigger-related operations 
  44.  
  45. up Create and deploy a stack 

保存并登錄憑證:

  1. docker login 
  2.  
  3. Username: arungupta 
  4.  
  5. Password: 
  6.  
  7. Email: arun.gupta@gmail.com 
  8.  
  9. WARNING: login credentials saved in /Users/arungupta/.docker/config.json 
  10.  
  11. Login Succeeded 

創(chuàng)建新的Docker Cloud節(jié)點(diǎn)

根據(jù)云服務(wù)供應(yīng)商相關(guān)說明鏈接利用Docker Cloud Web UI注冊(cè)您的云供應(yīng)商證書。目前支持Amazon、Digital Ocean、Azure等主流供應(yīng)商。

利用單一節(jié)點(diǎn)創(chuàng)建一套節(jié)點(diǎn)集群:

  1. docker-cloud nodecluster create -t 1 --tag couchbase couchbase-node aws us-west-1 m3.large 
  2.  
  3. 42a34e04-02e1-47be-bf87-ec06e0e0b604 

此節(jié)點(diǎn)擁有一個(gè)節(jié)點(diǎn)(-t 1),且使用標(biāo)簽“couchbase” (--tag couchbase)。最后四條參數(shù)分別代表節(jié)點(diǎn)集群名稱(couchbase-node)、供應(yīng)商(aws)、區(qū)域(us-west-1)以及節(jié)點(diǎn)類型(m3.large)。

此節(jié)點(diǎn)集群中的每個(gè)節(jié)點(diǎn)都將分配有標(biāo)簽,并用于隨后將服務(wù)指定至特定節(jié)點(diǎn)或者節(jié)點(diǎn)集群。

此節(jié)點(diǎn)集群的運(yùn)行狀態(tài)如下:

  1. docker-cloud nodecluster inspect 42a34e04-02e1-47be-bf87-ec06e0e0b604 | jq 
  2.  
  3.  
  4. "disk"60
  5.  
  6. "uuid""42a34e04-02e1-47be-bf87-ec06e0e0b604"
  7.  
  8. "tags": [ 
  9.  
  10.  
  11. "name""couchbase" 
  12.  
  13.  
  14. ], 
  15.  
  16. "current_num_nodes"1
  17.  
  18. "region""/api/infra/v1/region/aws/us-west-1/"
  19.  
  20. "target_num_nodes"1
  21.  
  22. "state""Deployed"
  23.  
  24. "node_type""/api/infra/v1/nodetype/aws/m3.large/"
  25.  
  26. "resource_uri""/api/infra/v1/nodecluster/42a34e04-02e1-47be-bf87-ec06e0e0b604/"
  27.  
  28. "destroyed_datetime"null
  29.  
  30. "provider_options": {}, 
  31.  
  32. "nodes": [ 
  33.  
  34. "/api/infra/v1/node/5c4c78e0-71c9-4420-9a1d-fdb04a35d1de/" 
  35.  
  36. ], 
  37.  
  38. "deployed_datetime""Tue, 15 Mar 2016 17:18:17 +0000"
  39.  
  40. "nickname""couchbase-node"
  41.  
  42. "dockercloud_action_uri"""
  43.  
  44. "name""couchbase-node" 
  45.  

Cloud.docker.com的儀表板更新如下:

亦可查看更多關(guān)于各個(gè)節(jié)點(diǎn)的具體信息:

創(chuàng)建一項(xiàng)新的Docker Cloud服務(wù)

創(chuàng)建一項(xiàng)Docker Cloud服務(wù):

  1. docker-cloud service create -p 8091:8091 -p 8092:8092 -p 8093:8093 -p 11210:11210 arungupta/couchbase 
  2.  
  3. 834343fd-b1d5-4d66-a2cd-69d27a471658 

如果存在多個(gè)節(jié)點(diǎn)集群,則可使用--tag將一項(xiàng)服務(wù)分配至一套節(jié)點(diǎn)集群。

docker-cli#10字段旨在確保多個(gè)端口可通過-p 8091-8093:8091-8093格式進(jìn)行公開。

這里使用的Docker鏡像為arungupta/couchbase。此鏡像基于Docker Hub上的官方couchbase鏡像,且針對(duì)不同服務(wù)進(jìn)行了預(yù)配置。

啟動(dòng)該Docker Cloud服務(wù):

  1. docker-cloud service start 834343fd-b1d5-4d66-a2cd-69d27a471658 
  2.  
  3. 834343fd-b1d5-4d66-a2cd-69d27a471658 

更新后的儀表板如下:

獲取該Docker Cloud服務(wù)日志:

  1. docker-cloud service logs 834343fd-b1d5-4d66-a2cd-69d27a471658 
  2.  
  3. couchbase-d96eed5d-1 | 2016-03-14T22:54:04.826000846Z Starting Couchbase Server -- Web UI available at http://:8091 
  4.  
  5. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.832855273Z * Trying 127.0.0.1... 
  6.  
  7. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.833816400Z % Total % Received % Xferd Average Speed Time Time Time Current 
  8.  
  9. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.834647384Z Dload Upload Total Spent Left Speed 
  10.  
  11. 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0
  12.  
  13. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835659864Z > POST /pools/default HTTP/1.1 
  14.  
  15. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835705633Z > User-Agent: curl/7.40.0-DEV 
  16.  
  17. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835764766Z > Host: 127.0.0.1:8091 
  18.  
  19. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835808491Z > Accept: */* 
  20.  
  21. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835849972Z > Content-Length: 36 
  22.  
  23. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835890805Z > Content-Type: application/x-www-form-urlencoded 
  24.  
  25. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835951739Z > 
  26.  
  27. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.836153748Z } [36 bytes data] 
  28.  
  29. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.836431490Z * upload completely sent off: 36 out of 36 bytes 
  30.  
  31. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838702601Z < HTTP/1.1 200 OK 
  32.  
  33. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838831946Z < Server: Couchbase Server 
  34.  
  35. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838882039Z < Pragma: no-cache 
  36.  
  37. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838929456Z < Date: Mon, 14 Mar 2016 22:54:19 GMT 
  38.  
  39. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838944199Z < Content-Length: 0 
  40.  
  41. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838973658Z < Cache-Control: no-cache 
  42.  
  43. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838984780Z < 
  44.  
  45. 100 36 0 0 100 36 0 5643 --:--:-- --:--:-- --:--:-- 6000 
  46.  
  47. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.839338450Z * Connection #0 to host 127.0.0.1 left intact 
  48.  
  49. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.843462008Z * Trying 127.0.0.1... 
  50.  
  51. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.844335715Z % Total % Received % Xferd Average Speed Time Time Time Current 
  52.  
  53. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845478686Z Dload Upload Total Spent Left Speed 
  54.  
  55. 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0) 
  56.  
  57. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845676061Z > POST /node/controller/setupServices HTTP/1.1 
  58.  
  59. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845729619Z > User-Agent: curl/7.40.0-DEV 
  60.  
  61. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845805193Z > Host: 127.0.0.1:8091 
  62.  
  63. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845858410Z > Accept: */
  64.  
  65. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845911479Z > Content-Length: 26 
  66.  
  67. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845986653Z > Content-Type: application/x-www-form-urlencoded 
  68.  
  69. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.846040578Z > 
  70.  
  71. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.846312512Z } [26 bytes data] 
  72.  
  73. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.846561659Z * upload completely sent off: 26 out of 26 bytes 
  74.  
  75. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847024846Z < HTTP/1.1 200 OK 
  76.  
  77. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847082032Z < Server: Couchbase Server 
  78.  
  79. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847157246Z < Pragma: no-cache 
  80.  
  81. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847211690Z < Date: Mon, 14 Mar 2016 22:54:19 GMT 
  82.  
  83. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847266024Z < Content-Length: 0 
  84.  
  85. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847344403Z < Cache-Control: no-cache 
  86.  
  87. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847411160Z < 
  88.  
  89. 100 26 0 0 100 26 0 6056 --:--:-- --:--:-- --:--:-- 8666 
  90.  
  91. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.849284426Z * Connection #0 to host 127.0.0.1 left intact 
  92.  
  93. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.853702443Z * Trying 127.0.0.1... 
  94.  
  95. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.853890120Z % Total % Received % Xferd Average Speed Time Time Time Current 
  96.  
  97. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.853943309Z Dload Upload Total Spent Left Speed 
  98.  
  99. 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0
  100.  
  101. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854112174Z > POST /settings/web HTTP/1.1 
  102.  
  103. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854169870Z > User-Agent: curl/7.40.0-DEV 
  104.  
  105. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854223412Z > Host: 127.0.0.1:8091 
  106.  
  107. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854278756Z > Accept: */* 
  108.  
  109. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854335649Z > Content-Length: 50 
  110.  
  111. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854391073Z > Content-Type: application/x-www-form-urlencoded 
  112.  
  113. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854447141Z > 
  114.  
  115. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854683623Z } [50 bytes data] 
  116.  
  117. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.855024680Z * upload completely sent off: 50 out of 50 bytes 
  118.  
  119. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859378932Z < HTTP/1.1 200 OK 
  120.  
  121. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859530830Z < Server: Couchbase Server 
  122.  
  123. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859611527Z < Pragma: no-cache 
  124.  
  125. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859794083Z < Date: Mon, 14 Mar 2016 22:54:19 GMT 
  126.  
  127. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859848224Z < Content-Type: application/json 
  128.  
  129. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859912932Z < Content-Length: 39 
  130.  
  131. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859957829Z < Cache-Control: no-cache 
  132.  
  133. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859972017Z < 
  134.  
  135. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859986584Z { [39 bytes data] 
  136.  
  137. 100 89 100 39 100 50 6060 7770 --:--:-- --:--:-- --:--:-- 8333 
  138.  
  139. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.860221103Z * Connection #0 to host 127.0.0.1 left intact 
  140.  
  141. couchbase-d96eed5d-1 | 2016-03-14T22:54:19.860730000Z {"newBaseUri":"http://127.0.0.1:8091/"}/entrypoint.sh couchbase-server 

日志的輸出結(jié)果來自被回調(diào)以配置Couchbase服務(wù)器的Couchbase REST API。

在Docker Cloud內(nèi)訪問Couchbase Server

檢查Docker Cloud服務(wù)以獲取公開的容器端口:

  1. docker-cloud service inspect 834343fd-b1d5-4d66-a2cd-69d27a471658 | jq ".container_ports" 
  2.  
  3.  
  4.  
  5. "protocol""tcp"
  6.  
  7. "outer_port"8091
  8.  
  9. "inner_port"8091
  10.  
  11. "port_name""unknown"
  12.  
  13. "published"true
  14.  
  15. "endpoint_uri""tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8091/" 
  16.  
  17. }, 
  18.  
  19.  
  20. "protocol""tcp"
  21.  
  22. "outer_port"8092
  23.  
  24. "inner_port"8092
  25.  
  26. "port_name""unknown"
  27.  
  28. "published"true
  29.  
  30. "endpoint_uri""tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8092/" 
  31.  
  32. }, 
  33.  
  34.  
  35. "protocol""tcp"
  36.  
  37. "outer_port"8093
  38.  
  39. "inner_port"8093
  40.  
  41. "port_name""unknown"
  42.  
  43. "published"true
  44.  
  45. "endpoint_uri""tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8093/" 
  46.  
  47. }, 
  48.  
  49.  
  50. "protocol""tcp"
  51.  
  52. "outer_port"11210
  53.  
  54. "inner_port"11210
  55.  
  56. "port_name""unknown"
  57.  
  58. "published"true
  59.  
  60. "endpoint_uri""tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:11210/" 
  61.  
  62.  

更具體地講,Couchbase Web Console的URI可整理為:

  1. docker-cloud service inspect 834343fd-b1d5-4d66-a2cd-69d27a471658 | jq ".container_ports[0].endpoint_uri" | sed 's/tcp/http/g' 
  2.  
  3. "http://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8091/" 

利用http://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8091/訪問Couchbase Web Console即可查看其登錄界面。輸入 Administrator與password。

Couchbase Web Console如下所示:

終止Docker Cloud服務(wù)與節(jié)點(diǎn)

檢查當(dāng)前正在運(yùn)行的各Docker Cloud服務(wù):

  1. docker-cloud service ps 
  2.  
  3. NAME UUID STATUS #CONTAINERS IMAGE DEPLOYED PUBLIC DNS STACK 
  4.  
  5. couchbase-d96eed5d 834343fd ▶ Running 1 arungupta/couchbase:latest 26 minutes ago couchbase-d96eed5d.834343fd.svc.dockerapp.io 

終止該服務(wù):

  1. docker-cloud service terminate couchbase-d96eed5d 
  2.  
  3. 834343fd-b1d5-4d66-a2cd-69d27a471658 

檢查節(jié)點(diǎn)列表:

  1. docker-cloud node ls 
  2.  
  3. UUID FQDN LASTSEEN STATUS CLUSTER DOCKER_VER 
  4.  
  5. a8059155 a8059155-390c-42db-9fb1-3b1bd3fb222c.node.dockerapp.io 1 minute ago ▶ Deployed couchbase-node 1.9.1-cs2 

終止該節(jié)點(diǎn):

  1. docker-cloud node rm a8059155 
  2.  
  3. a8059155-390c-42db-9fb1-3b1bd3fb222c 

 原文標(biāo)題:Couchbase Server: Getting Started With Docker Cloud

 【51CTO.com獨(dú)家譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明來源】

責(zé)任編輯:xinxiaoliang 來源: 51CTO
相關(guān)推薦

2021-01-26 08:37:18

MobXVueReact

2014-06-24 09:41:56

Android Stu教程

2024-01-29 00:36:50

Backstage設(shè)施工具

2017-05-17 14:46:22

容器DockerLinux

2021-11-26 09:40:37

EclipseIDEA開發(fā)

2014-01-22 10:00:10

Android SDKAndroid開發(fā)

2013-12-04 13:27:56

Android SDK項(xiàng)目

2013-12-04 14:44:41

Android SDK用戶交互

2013-12-26 15:40:33

Android SDK項(xiàng)目

2014-06-06 14:25:03

iOS 8SwiftWWDC2014

2013-12-26 15:14:38

Android SDK運(yùn)行調(diào)試

2012-08-01 17:39:17

2013-12-26 14:52:52

Android SDK物理設(shè)備

2021-01-19 06:16:05

前端Babel 技術(shù)熱點(diǎn)

2013-11-27 10:12:11

2013-12-04 14:29:18

Android SDK應(yīng)用程序

2013-12-26 15:47:59

Android SDK應(yīng)用程序

2014-03-16 09:21:39

Android開發(fā)Android SDK

2013-12-04 15:11:03

Android SDK應(yīng)用程序

2013-12-26 15:26:48

Android SDKActivity生命周期
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)