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)用
而在今天的文章中,我們將探討:
- 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鏡像:
- brew install docker-cloud
- docker-cloud nodecluster create -t 1 --tag couchbase couchbase-node aws us-west-1 m3.large
- docker-cloud service create --tag couchbase -p 8091:8091 -p 8092:8092 -p 8093:8093 -p 11210:11210 arungupta/couchbase
- docker-cloud service start {SERVICE_ID}
- 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:
- brew install docker-cloud
- ==> Downloading https://homebrew.bintray.com/bottles/docker-cloud-1.0.2.yosemite.bottle.tar.gz
- Already downloaded: /Library/Caches/Homebrew/docker-cloud-1.0.2.yosemite.bottle.tar.gz
- ==> Pouring docker-cloud-1.0.2.yosemite.bottle.tar.gz
- �� /usr/local/Cellar/docker-cloud/1.0.2: 482 files, 4.1M
更為完整的安裝操作請(qǐng)參閱“安裝CLI”一文。
檢查版本:
- docker-cloud -v
- docker-cloud 1.0.2
完整的命令內(nèi)容如下:
- usage: docker-cloud [-h] [-v]
- {action,container,event,exec,login,node,nodecluster,repository,run,service,stack,tag,trigger,up}
- ...
- Docker Cloud CLI
- optional arguments:
- -h, --help show this help message and exit
- -v, --version show program's version number and exit
- Docker Cloud CLI commands:
- {action,container,event,exec,login,node,nodecluster,repository,run,service,stack,tag,trigger,up}
- action Action-related operations
- container Container-related operations
- event Get real time Docker Cloud events
- exec Run a command in a running container
- login Please use "docker login" to log into Docker Cloud
- node Node-related operations
- nodecluster NodeCluster-related operations
- repository Repository-related operations
- run Create and run a new service
- service Service-related operations
- stack Stack-related operations
- tag Tag-related operations
- trigger Trigger-related operations
- up Create and deploy a stack
保存并登錄憑證:
- docker login
- Username: arungupta
- Password:
- Email: arun.gupta@gmail.com
- WARNING: login credentials saved in /Users/arungupta/.docker/config.json
- 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)集群:
- docker-cloud nodecluster create -t 1 --tag couchbase couchbase-node aws us-west-1 m3.large
- 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)如下:
- docker-cloud nodecluster inspect 42a34e04-02e1-47be-bf87-ec06e0e0b604 | jq
- {
- "disk": 60,
- "uuid": "42a34e04-02e1-47be-bf87-ec06e0e0b604",
- "tags": [
- {
- "name": "couchbase"
- }
- ],
- "current_num_nodes": 1,
- "region": "/api/infra/v1/region/aws/us-west-1/",
- "target_num_nodes": 1,
- "state": "Deployed",
- "node_type": "/api/infra/v1/nodetype/aws/m3.large/",
- "resource_uri": "/api/infra/v1/nodecluster/42a34e04-02e1-47be-bf87-ec06e0e0b604/",
- "destroyed_datetime": null,
- "provider_options": {},
- "nodes": [
- "/api/infra/v1/node/5c4c78e0-71c9-4420-9a1d-fdb04a35d1de/"
- ],
- "deployed_datetime": "Tue, 15 Mar 2016 17:18:17 +0000",
- "nickname": "couchbase-node",
- "dockercloud_action_uri": "",
- "name": "couchbase-node"
- }
Cloud.docker.com的儀表板更新如下:
亦可查看更多關(guān)于各個(gè)節(jié)點(diǎn)的具體信息:
創(chuàng)建一項(xiàng)新的Docker Cloud服務(wù)
創(chuàng)建一項(xiàng)Docker Cloud服務(wù):
- docker-cloud service create -p 8091:8091 -p 8092:8092 -p 8093:8093 -p 11210:11210 arungupta/couchbase
- 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ù):
- docker-cloud service start 834343fd-b1d5-4d66-a2cd-69d27a471658
- 834343fd-b1d5-4d66-a2cd-69d27a471658
更新后的儀表板如下:
獲取該Docker Cloud服務(wù)日志:
- docker-cloud service logs 834343fd-b1d5-4d66-a2cd-69d27a471658
- couchbase-d96eed5d-1 | 2016-03-14T22:54:04.826000846Z Starting Couchbase Server -- Web UI available at http://:8091
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.832855273Z * Trying 127.0.0.1...
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.833816400Z % Total % Received % Xferd Average Speed Time Time Time Current
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.834647384Z Dload Upload Total Spent Left Speed
- 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0)
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835659864Z > POST /pools/default HTTP/1.1
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835705633Z > User-Agent: curl/7.40.0-DEV
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835764766Z > Host: 127.0.0.1:8091
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835808491Z > Accept: */*
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835849972Z > Content-Length: 36
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835890805Z > Content-Type: application/x-www-form-urlencoded
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.835951739Z >
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.836153748Z } [36 bytes data]
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.836431490Z * upload completely sent off: 36 out of 36 bytes
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838702601Z < HTTP/1.1 200 OK
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838831946Z < Server: Couchbase Server
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838882039Z < Pragma: no-cache
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838929456Z < Date: Mon, 14 Mar 2016 22:54:19 GMT
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838944199Z < Content-Length: 0
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838973658Z < Cache-Control: no-cache
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.838984780Z <
- 100 36 0 0 100 36 0 5643 --:--:-- --:--:-- --:--:-- 6000
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.839338450Z * Connection #0 to host 127.0.0.1 left intact
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.843462008Z * Trying 127.0.0.1...
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.844335715Z % Total % Received % Xferd Average Speed Time Time Time Current
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845478686Z Dload Upload Total Spent Left Speed
- 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0)
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845676061Z > POST /node/controller/setupServices HTTP/1.1
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845729619Z > User-Agent: curl/7.40.0-DEV
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845805193Z > Host: 127.0.0.1:8091
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845858410Z > Accept: */*
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845911479Z > Content-Length: 26
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.845986653Z > Content-Type: application/x-www-form-urlencoded
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.846040578Z >
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.846312512Z } [26 bytes data]
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.846561659Z * upload completely sent off: 26 out of 26 bytes
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847024846Z < HTTP/1.1 200 OK
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847082032Z < Server: Couchbase Server
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847157246Z < Pragma: no-cache
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847211690Z < Date: Mon, 14 Mar 2016 22:54:19 GMT
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847266024Z < Content-Length: 0
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847344403Z < Cache-Control: no-cache
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.847411160Z <
- 100 26 0 0 100 26 0 6056 --:--:-- --:--:-- --:--:-- 8666
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.849284426Z * Connection #0 to host 127.0.0.1 left intact
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.853702443Z * Trying 127.0.0.1...
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.853890120Z % Total % Received % Xferd Average Speed Time Time Time Current
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.853943309Z Dload Upload Total Spent Left Speed
- 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0)
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854112174Z > POST /settings/web HTTP/1.1
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854169870Z > User-Agent: curl/7.40.0-DEV
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854223412Z > Host: 127.0.0.1:8091
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854278756Z > Accept: */*
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854335649Z > Content-Length: 50
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854391073Z > Content-Type: application/x-www-form-urlencoded
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854447141Z >
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.854683623Z } [50 bytes data]
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.855024680Z * upload completely sent off: 50 out of 50 bytes
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859378932Z < HTTP/1.1 200 OK
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859530830Z < Server: Couchbase Server
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859611527Z < Pragma: no-cache
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859794083Z < Date: Mon, 14 Mar 2016 22:54:19 GMT
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859848224Z < Content-Type: application/json
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859912932Z < Content-Length: 39
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859957829Z < Cache-Control: no-cache
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859972017Z <
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.859986584Z { [39 bytes data]
- 100 89 100 39 100 50 6060 7770 --:--:-- --:--:-- --:--:-- 8333
- couchbase-d96eed5d-1 | 2016-03-14T22:54:19.860221103Z * Connection #0 to host 127.0.0.1 left intact
- 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ù)以獲取公開的容器端口:
- docker-cloud service inspect 834343fd-b1d5-4d66-a2cd-69d27a471658 | jq ".container_ports"
- [
- {
- "protocol": "tcp",
- "outer_port": 8091,
- "inner_port": 8091,
- "port_name": "unknown",
- "published": true,
- "endpoint_uri": "tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8091/"
- },
- {
- "protocol": "tcp",
- "outer_port": 8092,
- "inner_port": 8092,
- "port_name": "unknown",
- "published": true,
- "endpoint_uri": "tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8092/"
- },
- {
- "protocol": "tcp",
- "outer_port": 8093,
- "inner_port": 8093,
- "port_name": "unknown",
- "published": true,
- "endpoint_uri": "tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:8093/"
- },
- {
- "protocol": "tcp",
- "outer_port": 11210,
- "inner_port": 11210,
- "port_name": "unknown",
- "published": true,
- "endpoint_uri": "tcp://couchbase-d96eed5d.834343fd.svc.dockerapp.io:11210/"
- }
- ]
更具體地講,Couchbase Web Console的URI可整理為:
- docker-cloud service inspect 834343fd-b1d5-4d66-a2cd-69d27a471658 | jq ".container_ports[0].endpoint_uri" | sed 's/tcp/http/g'
- "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ù):
- docker-cloud service ps
- NAME UUID STATUS #CONTAINERS IMAGE DEPLOYED PUBLIC DNS STACK
- couchbase-d96eed5d 834343fd ▶ Running 1 arungupta/couchbase:latest 26 minutes ago couchbase-d96eed5d.834343fd.svc.dockerapp.io
終止該服務(wù):
- docker-cloud service terminate couchbase-d96eed5d
- 834343fd-b1d5-4d66-a2cd-69d27a471658
檢查節(jié)點(diǎn)列表:
- docker-cloud node ls
- UUID FQDN LASTSEEN STATUS CLUSTER DOCKER_VER
- a8059155 a8059155-390c-42db-9fb1-3b1bd3fb222c.node.dockerapp.io 1 minute ago ▶ Deployed couchbase-node 1.9.1-cs2
終止該節(jié)點(diǎn):
- docker-cloud node rm a8059155
- a8059155-390c-42db-9fb1-3b1bd3fb222c
原文標(biāo)題:Couchbase Server: Getting Started With Docker Cloud
【51CTO.com獨(dú)家譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明來源】