Despliegue de Docker en Amazon con Tutum explicaba cómo desplegar una imagen Docker en Docker Tutum. Tutum es ahora Nube Docker.
Leer Anuncio de Docker Cloud para más detalles.

Las principales características de Docker Cloud son:
- Autenticación mediante Docker ID
- Integración con Docker Hub
- Apoyo a Repositorios oficiales de Docker
- Motor Docker con soporte comercial
- Capacidad para desplegar y escalar sus aplicaciones mediante GUI, API y CLI
Este blog lo demostrará:
- Conceptos clave de Docker Cloud
- Cómo crear un nuevo nodo Docker Cloud
- Cómo instalar Docker Cloud CLI
- Cómo crear un nuevo servicio en la nube Docker
- Acceso al servidor Couchbase en la nube Docker
- Cómo dar de baja el servicio en la nube y el nodo Docker
Y finalmente se irá con algunas referencias para los docs de Docker Cloud.
El blog utilizará Servidor Couchbase - una base de datos de documentos JSON de código abierto, altamente escalable, para la imagen Docker.
Docker Cloud TL;DR
Estos son los comandos rápidos para ejecutar una imagen Docker utilizando Docker Cloud en Amazon:
|
1 2 3 4 5 |
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' |
Más detalles a continuación.
Conceptos clave de Docker Cloud
Entendamos los conceptos básicos de Docker Cloud:
- Nodos son hosts/VM Linux individuales utilizados para desplegar y ejecutar sus aplicaciones. Se pueden aprovisionar nuevos nodos para aumentar la capacidad. Docker Cloud no proporciona servicios de alojamiento. Los nodos se aprovisionan utilizando servidores físicos, máquinas virtuales o proveedores de nube.
- Nodo Clusters son grupos lógicos de nodos del mismo tipo. Los clústeres de nodos permiten escalar fácilmente la infraestructura mediante el aprovisionamiento de más nodos.
- Servicios son grupos lógicos de contenedores de la misma imagen. Los servicios simplifican el escalado de la aplicación en distintos nodos.
Docker Cloud puede gestionarse con Web, CLI o API REST. Este blog utilizará la CLI de Docker Cloud para realizar todos los comandos.
Instalar Docker Cloud CLI
Instale Docker Cloud CLI:
|
1 2 3 4 5 |
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 |
Las instrucciones completas de instalación están en Instalación de CLI. Comprueba la versión:
|
1 2 |
docker-cloud -v docker-cloud 1.0.2 |
El conjunto completo de comandos son:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
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 |
Guarde las credenciales de inicio de sesión:
|
1 2 3 4 5 6 |
docker login Username: arungupta Password: Email: arun.gupta@gmail.com WARNING: login credentials saved in /Users/arungupta/.docker/config.json Login Succeeded |
Crear nuevo nodo Docker Cloud
Registre las credenciales de su proveedor de nube en Interfaz web de Docker Cloud como se explica en Enlace a un proveedor de servicios en nube. Amazon, Digital Ocean, Azure y otros. se admiten proveedores de nube.
Cree un nuevo clúster de nodos con un único nodo:
|
1 2 |
docker-cloud nodecluster create -t 1 --tag couchbase couchbase-node aws us-west-1 m3.large 42a34e04-02e1-47be-bf87-ec06e0e0b604 |
Este clúster de nodos tiene un único nodo (-t 1) y utiliza la etiqueta "couchbase" (--tag couchbase). Los cuatro últimos parámetros son el nombre del nodecluster (nodo couchbaseproveedor (awsregión (us-oeste-1 y nodetype (m3.grande).
Cada nodo de este clúster de nodos recibirá la etiqueta asignada. Esto se utilizará más adelante para asignar servicios a un nodo o clúster de nodos específico.
Se puede comprobar el estado de este clúster de nodos:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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" } |
El cuadro de mandos en cloud.docker.com se actualiza para mostrar: 
También se puede ver más información sobre cada nodo: 
Crear un nuevo servicio en la nube Docker
Crear un servicio de nube Docker:
|
1 2 |
docker-cloud service create --tag couchbase -p 8091:8091 -p 8092:8092 -p 8093:8093 -p 11210:11210 arungupta/couchbase 936dbe58-7c7c-4289-837a-15d29128e5ea |
Si existen clusters de nodos múltiples, entonces --tag se utiliza para asignar un servicio a un clúster de nodos. docker-cli#10 es archivado para asegurar que múltiples puertos puedan ser expuestos usando el formato -p 8091-8093:8091-8093. Esto se alineará con la CLI de docker.
La imagen Docker utilizada aquí es arungupta/couchbase. Esta imagen se basa en el couchbase imagen en Centro Docker y lo preconfigura para diferentes servicios.
Inicie el servicio Docker Cloud:
|
1 2 |
docker-cloud service start 834343fd-b1d5-4d66-a2cd-69d27a471658 834343fd-b1d5-4d66-a2cd-69d27a471658 |
El salpicadero actualizado tiene el siguiente aspecto:
Obtenga los registros de Docker Cloud Service:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
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 https://: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":"https://127.0.0.1:8091/"}/entrypoint.sh couchbase-server |
El registro muestra la salida del API REST de Couchbase invocado para configurar el servidor Couchbase.
Acceso al servidor Couchbase en la nube Docker
Inspeccione el servicio Docker Cloud para los puertos de contenedor expuestos:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
docker-cloud service inspect 936dbe58-7c7c-4289-837a-15d29128e5ea | jq ".container_ports" [ { "protocol": "tcp", "outer_port": 8091, "inner_port": 8091, "port_name": "unknown", "published": true, "endpoint_uri": "tcp://couchbase-b9132b42.936dbe58.svc.dockerapp.io:8091/" }, { "protocol": "tcp", "outer_port": 8092, "inner_port": 8092, "port_name": "unknown", "published": true, "endpoint_uri": "tcp://couchbase-b9132b42.936dbe58.svc.dockerapp.io:8092/" }, { "protocol": "tcp", "outer_port": 8093, "inner_port": 8093, "port_name": "unknown", "published": true, "endpoint_uri": "tcp://couchbase-b9132b42.936dbe58.svc.dockerapp.io:8093/" }, { "protocol": "tcp", "outer_port": 11210, "inner_port": 11210, "port_name": "unknown", "published": true, "endpoint_uri": "tcp://couchbase-b9132b42.936dbe58.svc.dockerapp.io:11210/" } ] |
Para ser más específicos, el URI exacto para el archivo Consola web de Couchbase se puede obtener como:
|
1 2 |
docker-cloud service inspect 936dbe58-7c7c-4289-837a-15d29128e5ea | jq ".container_ports[0].endpoint_uri" | sed 's/tcp/http/g' "https://couchbase-b9132b42.936dbe58.svc.dockerapp.io:8091/" |
Acceda a la Consola Web de Couchbase en https://couchbase-b9132b42.936dbe58.svc.dockerapp.io:8091/ para ver la pantalla de inicio de sesión de la Consola Web de Couchbase. Introduzca las credenciales de contraseña de Administrador y contraseña. 
Y el Consola web de Couchbase parece:
Finalizar el servicio de nube Docker y el nodo
Compruebe la lista de servicios de Docker Cloud en ejecución:
|
1 2 3 |
docker-cloud service ps NAME UUID STATUS #CONTAINERS IMAGE DEPLOYED PUBLIC DNS STACK couchbase-b9132b42 936dbe58 ▶ Running 1 arungupta/couchbase:latest 10 minutes ago couchbase-b9132b42.936dbe58.svc.dockerapp.io |
Dar de baja el servicio:
|
1 |
docker-cloud service terminate 936dbe58 |
Comprueba la lista de nodos:
|
1 2 3 |
docker-cloud node ls UUID FQDN LASTSEEN STATUS CLUSTER DOCKER_VER 5c4c78e0 5c4c78e0-71c9-4420-9a1d-fdb04a35d1de.node.dockerapp.io 35 seconds ago ▶ Deployed couchbase-node 1.9.1-cs2 |
Termina el nodo como:
|
1 |
docker-cloud node rm 5c4c78e0 |
Referencias de Docker Cloud
- Primeros pasos con Docker Cloud
- Tutoriales sobre la nube Docker
- API de Docker Cloud
- Preguntas sobre Foros Docker
En este blog has aprendido:
- Conceptos clave de Docker Cloud
- Cómo crear un nuevo nodo Docker Cloud
- Cómo instalar Docker Cloud CLI
- Cómo crear un nuevo servicio en la nube Docker
- Acceso al servidor Couchbase en la nube Docker
- Cómo dar de baja el servicio en la nube y el nodo Docker
Que aproveche Fuente: https://www.couchbase.com/blog/getting-started-docker-cloud/

