{"id":2196,"date":"2017-01-03T19:02:34","date_gmt":"2017-01-03T19:02:34","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2196"},"modified":"2019-06-26T12:06:29","modified_gmt":"2019-06-26T19:06:29","slug":"getting-started-docker-cloud","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/","title":{"rendered":"Getting Started with Docker Cloud"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/blog\/deploy-docker-amazon-cloud-tutum\/\">Deploying Docker to Amazon using Tutum<\/a>\u00a0explained how to deploy a Docker image to <a href=\"https:\/\/www.tutum.co\/\">Docker Tutum<\/a>.\u00a0Tutum is now <a href=\"https:\/\/cloud.docker.com\/\">Docker Cloud<\/a>.<\/p>\n<p>Read <a href=\"https:\/\/blog.docker.com\/2016\/03\/announcing-docker-cloud\/\">Announcing Docker Cloud<\/a> for more details.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13780\" src=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-logo.png\" alt=\"Docker Cloud Logo\" width=\"222\" height=\"300\" \/><\/p>\n<p>The key features of Docker Cloud are:<\/p>\n<ul>\n<li>Authentication using\u00a0Docker ID<\/li>\n<li>Integration with Docker Hub<\/li>\n<li>Support for <a href=\"https:\/\/docs.docker.com\/docker-hub\/official_repos\/\">Docker official repositories<\/a><\/li>\n<li>Commercially supported Docker Engine<\/li>\n<li>Ability to\u00a0deploy and scale your applications using GUI, API and CLI<\/li>\n<\/ul>\n<p>This blog will show:<\/p>\n<ul>\n<li>Key concepts of Docker Cloud<\/li>\n<li>How to create a new Docker Cloud Node<\/li>\n<li>How to install Docker Cloud CLI<\/li>\n<li>How to create a new Docker Cloud Service<\/li>\n<li>Access Couchbase Server in Docker Cloud<\/li>\n<li>How to terminate the Docker Cloud Service and Node<\/li>\n<\/ul>\n<p>And finally it&#8217;ll leave with some references for Docker Cloud docs.<\/p>\n<p>The blog will use <a href=\"https:\/\/developer.couchbase.com\/server\">Couchbase Server<\/a> &#8211; an open source, highly scalable, \u00a0JSON document database for the Docker image.<\/p>\n<h2>Docker Cloud\u00a0TL;DR<\/h2>\n<p>Here are the quick commands to run a\u00a0Docker image using Docker Cloud in Amazon:<\/p>\n<pre class=\"lang:default decode:true\">brew install docker-cloud\r\ndocker-cloud nodecluster create -t 1 --tag couchbase couchbase-node aws us-west-1 m3.large \r\ndocker-cloud service create --tag couchbase -p 8091:8091 -p 8092:8092 -p 8093:8093 -p 11210:11210 arungupta\/couchbase\r\ndocker-cloud service start {SERVICE_ID}\r\ndocker-cloud service inspect {SERVICE_ID} | jq \".container_ports[0].endpoint_uri\" | sed 's\/tcp\/http\/g'<\/pre>\n<p>More details below.<\/p>\n<h2>Key\u00a0Concepts of\u00a0Docker Cloud<\/h2>\n<p>Let&#8217;s understand\u00a0the core concepts of Docker Cloud:<\/p>\n<ul>\n<li><strong>Node<\/strong>s are individual Linux hosts\/VMs used to deploy and run your applications. New nodes can be provisioned to increase the capacity.\u00a0Docker Cloud does not provide hosting services. Nodes are provisioned using physical servers, virtual machine or cloud providers.<\/li>\n<li><strong>Node Cluster<\/strong>s are logical groups of nodes of the same type. Node Clusters allow to scale the infrastructure easily by provisioning more nodes.<\/li>\n<li><strong>Service<\/strong>s are logical groups of containers from the same image. Services make it simple to scale your application across different nodes.<\/li>\n<\/ul>\n<p>Docker Cloud can be managed with <a href=\"https:\/\/cloud.docker.com\">Web<\/a>, <a href=\"https:\/\/github.com\/docker\/dockercloud-cli\">CLI<\/a> or <a href=\"https:\/\/docs.docker.com\/apidocs\/docker-cloud\/\">REST API<\/a>.\u00a0This blog will use the Docker Cloud CLI to perform all the commands.<\/p>\n<h2>Install Docker Cloud CLI<\/h2>\n<p>Install Docker Cloud CLI:<\/p>\n<pre class=\"lang:default decode:true\">brew install docker-cloud\r\n==&gt; Downloading https:\/\/homebrew.bintray.com\/bottles\/docker-cloud-1.0.2.yosemite.bottle.tar.gz\r\nAlready downloaded: \/Library\/Caches\/Homebrew\/docker-cloud-1.0.2.yosemite.bottle.tar.gz\r\n==&gt; Pouring docker-cloud-1.0.2.yosemite.bottle.tar.gz\r\n?  \/usr\/local\/Cellar\/docker-cloud\/1.0.2: 482 files, 4.1M<\/pre>\n<p>Complete installation instructions are at <a href=\"https:\/\/docs.docker.com\/docker-cloud\/tutorials\/installing-cli\/\">Installing CLI<\/a>. Check version:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud -v\r\ndocker-cloud 1.0.2<\/pre>\n<p>Complete set of commands are:<\/p>\n<pre class=\"lang:default decode:true\">usage: docker-cloud [-h] [-v]\r\n                    {action,container,event,exec,login,node,nodecluster,repository,run,service,stack,tag,trigger,up}\r\n                    ...\r\n\r\nDocker Cloud CLI\r\n\r\noptional arguments:\r\n  -h, --help            show this help message and exit\r\n  -v, --version         show program's version number and exit\r\n\r\nDocker Cloud CLI commands:\r\n  {action,container,event,exec,login,node,nodecluster,repository,run,service,stack,tag,trigger,up}\r\n    action              Action-related operations\r\n    container           Container-related operations\r\n    event               Get real time Docker Cloud events\r\n    exec                Run a command in a running container\r\n    login               Please use \"docker login\" to log into Docker Cloud\r\n    node                Node-related operations\r\n    nodecluster         NodeCluster-related operations\r\n    repository          Repository-related operations\r\n    run                 Create and run a new service\r\n    service             Service-related operations\r\n    stack               Stack-related operations\r\n    tag                 Tag-related operations\r\n    trigger             Trigger-related operations\r\n    up                  Create and deploy a stack<\/pre>\n<p>Save the login credentials:<\/p>\n<pre class=\"lang:default decode:true\">docker login\r\nUsername: arungupta\r\nPassword: \r\nEmail: arun.gupta@gmail.com\r\nWARNING: login credentials saved in \/Users\/arungupta\/.docker\/config.json\r\nLogin Succeeded<\/pre>\n<h2>Create new Docker Cloud Node<\/h2>\n<p>Register your\u00a0cloud provider credentials with <a href=\"https:\/\/cloud.docker.com\">Docker Cloud Web UI<\/a>\u00a0as explained in <a href=\"https:\/\/docs.docker.com\/docker-cloud\/getting-started\/use-hosted\/\">Link to a Cloud Service Provider<\/a>.\u00a0Amazon, Digital Ocean, Azure, and\u00a0other <a href=\"https:\/\/docs.docker.com\/docker-cloud\/getting-started\/use-hosted\/\">cloud providers are supported<\/a>.<\/p>\n<p>Create a new node cluster with a single node:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud nodecluster create -t 1 --tag couchbase couchbase-node aws us-west-1 m3.large \r\n42a34e04-02e1-47be-bf87-ec06e0e0b604<\/pre>\n<p>This node cluster has a single node (<code>-t 1<\/code>)\u00a0and\u00a0uses the tag &#8220;couchbase&#8221; (<code>--tag couchbase<\/code>). Last four parameters are\u00a0nodecluster name (<code>couchbase-node<\/code>, provider (<code>aws<\/code>, region (<code>us-west-1<\/code> and nodetype (<code>m3.large<\/code>).<\/p>\n<p>Each node in this node cluster will be given the assigned tag. This will be used later to assign services to a specific node or node cluster.<\/p>\n<p>Status of this node cluster can be checked:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud nodecluster inspect 42a34e04-02e1-47be-bf87-ec06e0e0b604 | jq\r\n{\r\n  \"disk\": 60,\r\n  \"uuid\": \"42a34e04-02e1-47be-bf87-ec06e0e0b604\",\r\n  \"tags\": [\r\n    {\r\n      \"name\": \"couchbase\"\r\n    }\r\n  ],\r\n  \"current_num_nodes\": 1,\r\n  \"region\": \"\/api\/infra\/v1\/region\/aws\/us-west-1\/\",\r\n  \"target_num_nodes\": 1,\r\n  \"state\": \"Deployed\",\r\n  \"node_type\": \"\/api\/infra\/v1\/nodetype\/aws\/m3.large\/\",\r\n  \"resource_uri\": \"\/api\/infra\/v1\/nodecluster\/42a34e04-02e1-47be-bf87-ec06e0e0b604\/\",\r\n  \"destroyed_datetime\": null,\r\n  \"provider_options\": {},\r\n  \"nodes\": [\r\n    \"\/api\/infra\/v1\/node\/5c4c78e0-71c9-4420-9a1d-fdb04a35d1de\/\"\r\n  ],\r\n  \"deployed_datetime\": \"Tue, 15 Mar 2016 17:18:17 +0000\",\r\n  \"nickname\": \"couchbase-node\",\r\n  \"dockercloud_action_uri\": \"\",\r\n  \"name\": \"couchbase-node\"\r\n}<\/pre>\n<p>The dashboard at <a href=\"https:\/\/cloud.docker.com\">cloud.docker.com<\/a> is updated to show: <a href=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-created-node-dashboard.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13787\" src=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-created-node-dashboard.png\" alt=\"Docker Cloud Node Created Dashboard\" width=\"902\" height=\"419\" \/><\/a><\/p>\n<p>More information about each node can be seen as well: <a href=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-created-node.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13786\" src=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-created-node.png\" alt=\"Docker Cloud Created Node\" width=\"931\" height=\"718\" \/><\/a><\/p>\n<h2>Create a new Docker Cloud Service<\/h2>\n<p>Create a Docker Cloud Service:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud service create --tag couchbase -p 8091:8091 -p 8092:8092 -p 8093:8093 -p 11210:11210 arungupta\/couchbase\r\n936dbe58-7c7c-4289-837a-15d29128e5ea<\/pre>\n<p>If multiple node clusters exists, then <code>--tag<\/code> is used to assign a service to a node cluster. <a href=\"https:\/\/github.com\/docker\/dockercloud-cli\/issues\/10\">docker-cli#10<\/a>\u00a0is filed to ensure multiple ports can be exposed using -p 8091-8093:8091-8093 format. This will be aligned with the\u00a0docker CLI.<\/p>\n<p>Docker image used here is <code>arungupta\/couchbase<\/code>. This image is based on the official <code>couchbase<\/code> image at <a href=\"https:\/\/hub.docker.com\/_\/couchbase\/\">Docker Hub<\/a>\u00a0and <a href=\"https:\/\/github.com\/arun-gupta\/docker-images\/tree\/master\/couchbase\">pre-configures it for different services<\/a>.<\/p>\n<p>Start the\u00a0Docker Cloud Service:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud service start 834343fd-b1d5-4d66-a2cd-69d27a471658\r\n834343fd-b1d5-4d66-a2cd-69d27a471658<\/pre>\n<p>The updated dashboard looks like:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-service-started-1024x554.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13789\" src=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-service-started-1024x554.png\" alt=\"Docker Cloud Service Started\" width=\"604\" height=\"327\" \/><\/a><\/p>\n<p>Get the Docker Cloud\u00a0Service logs:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud service logs 834343fd-b1d5-4d66-a2cd-69d27a471658 \r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:04.826000846Z Starting Couchbase Server -- Web UI available at https:\/\/:8091\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.832855273Z *   Trying 127.0.0.1...\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.833816400Z   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.834647384Z                                  Dload  Upload   Total   Spent    Left  Speed\r\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to 127.0.0.1 (127.0.0.1) port 8091 (#0)\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.835659864Z &gt; POST \/pools\/default HTTP\/1.1\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.835705633Z &gt; User-Agent: curl\/7.40.0-DEV\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.835764766Z &gt; Host: 127.0.0.1:8091\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.835808491Z &gt; Accept: *\/*\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.835849972Z &gt; Content-Length: 36\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.835890805Z &gt; Content-Type: application\/x-www-form-urlencoded\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.835951739Z &gt; \r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.836153748Z } [36 bytes data]\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.836431490Z * upload completely sent off: 36 out of 36 bytes\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.838702601Z &lt; HTTP\/1.1 200 OK\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.838831946Z &lt; Server: Couchbase Server\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.838882039Z &lt; Pragma: no-cache\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.838929456Z &lt; Date: Mon, 14 Mar 2016 22:54:19 GMT\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.838944199Z &lt; Content-Length: 0\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.838973658Z &lt; Cache-Control: no-cache\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.838984780Z &lt; 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 &gt; POST \/node\/controller\/setupServices HTTP\/1.1\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.845729619Z &gt; User-Agent: curl\/7.40.0-DEV\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.845805193Z &gt; Host: 127.0.0.1:8091\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.845858410Z &gt; Accept: *\/*\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.845911479Z &gt; Content-Length: 26\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.845986653Z &gt; Content-Type: application\/x-www-form-urlencoded\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.846040578Z &gt; \r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.846312512Z } [26 bytes data]\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.846561659Z * upload completely sent off: 26 out of 26 bytes\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.847024846Z &lt; HTTP\/1.1 200 OK\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.847082032Z &lt; Server: Couchbase Server\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.847157246Z &lt; Pragma: no-cache\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.847211690Z &lt; Date: Mon, 14 Mar 2016 22:54:19 GMT\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.847266024Z &lt; Content-Length: 0\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.847344403Z &lt; Cache-Control: no-cache\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.847411160Z &lt; 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 &gt; POST \/settings\/web HTTP\/1.1\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.854169870Z &gt; User-Agent: curl\/7.40.0-DEV\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.854223412Z &gt; Host: 127.0.0.1:8091\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.854278756Z &gt; Accept: *\/*\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.854335649Z &gt; Content-Length: 50\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.854391073Z &gt; Content-Type: application\/x-www-form-urlencoded\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.854447141Z &gt; \r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.854683623Z } [50 bytes data]\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.855024680Z * upload completely sent off: 50 out of 50 bytes\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859378932Z &lt; HTTP\/1.1 200 OK\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859530830Z &lt; Server: Couchbase Server\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859611527Z &lt; Pragma: no-cache\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859794083Z &lt; Date: Mon, 14 Mar 2016 22:54:19 GMT\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859848224Z &lt; Content-Type: application\/json\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859912932Z &lt; Content-Length: 39\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859957829Z &lt; Cache-Control: no-cache\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859972017Z &lt; \r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.859986584Z { [39 bytes data]\r\n100    89  100    39  100    50   6060   7770 --:--:-- --:--:-- --:--:--  8333\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.860221103Z * Connection #0 to host 127.0.0.1 left intact\r\ncouchbase-d96eed5d-1 | 2016-03-14T22:54:19.860730000Z {\"newBaseUri\":\"https:\/\/127.0.0.1:8091\/\"}\/entrypoint.sh couchbase-server<\/pre>\n<p>The log shows output from the <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/rest-api\/rest-endpoints-all.html\">Couchbase REST API<\/a> invoked to configure the Couchbase server.<\/p>\n<h2>Access Couchbase Server in Docker Cloud<\/h2>\n<p>Inspect the Docker Cloud service for the exposed container ports:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud service inspect 936dbe58-7c7c-4289-837a-15d29128e5ea | jq \".container_ports\"\r\n[\r\n  {\r\n    \"protocol\": \"tcp\",\r\n    \"outer_port\": 8091,\r\n    \"inner_port\": 8091,\r\n    \"port_name\": \"unknown\",\r\n    \"published\": true,\r\n    \"endpoint_uri\": \"tcp:\/\/couchbase-b9132b42.936dbe58.svc.dockerapp.io:8091\/\"\r\n  },\r\n  {\r\n    \"protocol\": \"tcp\",\r\n    \"outer_port\": 8092,\r\n    \"inner_port\": 8092,\r\n    \"port_name\": \"unknown\",\r\n    \"published\": true,\r\n    \"endpoint_uri\": \"tcp:\/\/couchbase-b9132b42.936dbe58.svc.dockerapp.io:8092\/\"\r\n  },\r\n  {\r\n    \"protocol\": \"tcp\",\r\n    \"outer_port\": 8093,\r\n    \"inner_port\": 8093,\r\n    \"port_name\": \"unknown\",\r\n    \"published\": true,\r\n    \"endpoint_uri\": \"tcp:\/\/couchbase-b9132b42.936dbe58.svc.dockerapp.io:8093\/\"\r\n  },\r\n  {\r\n    \"protocol\": \"tcp\",\r\n    \"outer_port\": 11210,\r\n    \"inner_port\": 11210,\r\n    \"port_name\": \"unknown\",\r\n    \"published\": true,\r\n    \"endpoint_uri\": \"tcp:\/\/couchbase-b9132b42.936dbe58.svc.dockerapp.io:11210\/\"\r\n  }\r\n]<\/pre>\n<p>To be more specific, exact URI for the <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/manage\/management-tools.html\">Couchbase Web Console<\/a> can be obtained as:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud service inspect 936dbe58-7c7c-4289-837a-15d29128e5ea | jq \".container_ports[0].endpoint_uri\" | sed 's\/tcp\/http\/g'\r\n\"https:\/\/couchbase-b9132b42.936dbe58.svc.dockerapp.io:8091\/\"<\/pre>\n<p>Access the Couchbase Web Console at https:\/\/couchbase-b9132b42.936dbe58.svc.dockerapp.io:8091\/ to see the Couchbase Web Console login screen. Enter the password credentials of <code>Administrator<\/code> and <code>password<\/code>. <a href=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-couchbase-login-page-1024x556.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13791\" src=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-couchbase-login-page-1024x556.png\" alt=\"Docker Cloud Couchbase Login Page\" width=\"604\" height=\"328\" \/><\/a><\/p>\n<p>And the <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/manage\/management-tools.html\">Couchbase Web Console<\/a> looks like:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-couchbase-web-console-1024x836.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13792\" src=\"\/wp-content\/original-assets\/march-2016\/getting-started-with-docker-cloud\/docker-cloud-couchbase-web-console-1024x836.png\" alt=\"Docker Cloud Couchbase Web Console\" width=\"604\" height=\"493\" \/><\/a><\/p>\n<h2>Terminate the Docker Cloud Service and\u00a0Node<\/h2>\n<p>Check the list of\u00a0Docker Cloud services running:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud service ps\r\nNAME                UUID      STATUS       #CONTAINERS  IMAGE                       DEPLOYED        PUBLIC DNS                                      STACK\r\ncouchbase-b9132b42  936dbe58  \u25b6 Running              1  arungupta\/couchbase:latest  10 minutes ago  couchbase-b9132b42.936dbe58.svc.dockerapp.io<\/pre>\n<p>Terminate the\u00a0service:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud service terminate 936dbe58<\/pre>\n<p>Check the list of nodes:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud node ls\r\nUUID      FQDN                                                    LASTSEEN        STATUS      CLUSTER         DOCKER_VER\r\n5c4c78e0  5c4c78e0-71c9-4420-9a1d-fdb04a35d1de.node.dockerapp.io  35 seconds ago  \u25b6 Deployed  couchbase-node  1.9.1-cs2<\/pre>\n<p>Terminate the node as:<\/p>\n<pre class=\"lang:default decode:true\">docker-cloud node rm 5c4c78e0<\/pre>\n<h2>Docker Cloud References<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.docker.com\/docker-cloud\/getting-started\/\">Getting Started with Docker Cloud<\/a><\/li>\n<li><a href=\"https:\/\/docs.docker.com\/docker-cloud\/tutorials\/\">Docker Cloud\u00a0Tutorials<\/a><\/li>\n<li><a href=\"https:\/\/docs.docker.com\/apidocs\/docker-cloud\/\">Docker Cloud API<\/a><\/li>\n<li>Questions on <a href=\"https:\/\/forums.docker.com\/\">Docker Forums<\/a><\/li>\n<\/ul>\n<p>In this blog, you learned:<\/p>\n<ul>\n<li>Key concepts of Docker Cloud<\/li>\n<li>How to create a new Docker Cloud Node<\/li>\n<li>How to install Docker Cloud CLI<\/li>\n<li>How to create a new Docker Cloud Service<\/li>\n<li>Access Couchbase Server in Docker Cloud<\/li>\n<li>How to terminate the Docker Cloud Service and Node<\/li>\n<\/ul>\n<p>Enjoy! Source:\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\">https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deploying Docker to Amazon using Tutum\u00a0explained how to deploy a Docker image to Docker Tutum.\u00a0Tutum is now Docker Cloud. Read Announcing Docker Cloud for more details. The key features of Docker Cloud are: Authentication using\u00a0Docker ID Integration with Docker Hub [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[],"ppma_author":[8933],"class_list":["post-2196","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Getting Started with Docker Cloud - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with Docker Cloud\" \/>\n<meta property=\"og:description\" content=\"Deploying Docker to Amazon using Tutum\u00a0explained how to deploy a Docker image to Docker Tutum.\u00a0Tutum is now Docker Cloud. Read Announcing Docker Cloud for more details. The key features of Docker Cloud are: Authentication using\u00a0Docker ID Integration with Docker Hub [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-03T19:02:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-26T19:06:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@arungupta\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Getting Started with Docker Cloud\",\"datePublished\":\"2017-01-03T19:02:34+00:00\",\"dateModified\":\"2019-06-26T19:06:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\"},\"wordCount\":704,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\",\"name\":\"Getting Started with Docker Cloud - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-03T19:02:34+00:00\",\"dateModified\":\"2019-06-26T19:06:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with Docker Cloud\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\",\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"caption\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\"},\"description\":\"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.\",\"sameAs\":[\"https:\/\/x.com\/arungupta\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/arun-gupta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Getting Started with Docker Cloud - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/","og_locale":"en_US","og_type":"article","og_title":"Getting Started with Docker Cloud","og_description":"Deploying Docker to Amazon using Tutum\u00a0explained how to deploy a Docker image to Docker Tutum.\u00a0Tutum is now Docker Cloud. Read Announcing Docker Cloud for more details. The key features of Docker Cloud are: Authentication using\u00a0Docker ID Integration with Docker Hub [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-03T19:02:34+00:00","article_modified_time":"2019-06-26T19:06:29+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Arun Gupta, VP, Developer Advocacy, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@arungupta","twitter_misc":{"Written by":"Arun Gupta, VP, Developer Advocacy, Couchbase","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Getting Started with Docker Cloud","datePublished":"2017-01-03T19:02:34+00:00","dateModified":"2019-06-26T19:06:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/"},"wordCount":704,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/","url":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/","name":"Getting Started with Docker Cloud - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-03T19:02:34+00:00","dateModified":"2019-06-26T19:06:29+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-docker-cloud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting Started with Docker Cloud"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f","name":"Arun Gupta, VP, Developer Advocacy, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337","url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","caption":"Arun Gupta, VP, Developer Advocacy, Couchbase"},"description":"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.","sameAs":["https:\/\/x.com\/arungupta"],"url":"https:\/\/www.couchbase.com\/blog\/author\/arun-gupta\/"}]}},"authors":[{"term_id":8933,"user_id":58,"is_guest":0,"slug":"arun-gupta","display_name":"Arun Gupta, VP, Developer Advocacy, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","author_category":"","last_name":"Gupta","first_name":"Arun","job_title":"","user_url":"","description":"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team.\r\n\r\nGupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2196"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2196\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2196"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}