{"id":1947,"date":"2015-06-03T06:41:55","date_gmt":"2015-06-03T06:41:54","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1947"},"modified":"2017-05-03T14:22:58","modified_gmt":"2017-05-03T21:22:58","slug":"running-couchbase-server-under-docker-on-joyent","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/running-couchbase-server-under-docker-on-joyent\/","title":{"rendered":"Executando o Couchbase Server no Docker no Joyent Trident"},"content":{"rendered":"<p>A Joyent anunciou recentemente seu novo servi\u00e7o de hospedagem de cont\u00eaineres Triton Docker. H\u00e1 v\u00e1rias vantagens em executar cont\u00eaineres Docker no Triton em vez de em uma plataforma de hospedagem em nuvem mais tradicional:<\/p>\n<ul>\n<li>Melhor desempenho, pois n\u00e3o h\u00e1 sobrecarga de virtualiza\u00e7\u00e3o em n\u00edvel de hardware. Seus cont\u00eaineres s\u00e3o executados em bare metal.<\/li>\n<li>Rede simplificada entre cont\u00eaineres. Cada cont\u00eainer recebe seu pr\u00f3prio endere\u00e7o IP privado (e, opcionalmente, p\u00fablico).<\/li>\n<li>Os hosts s\u00e3o abstra\u00eddos - basta implementar na \"nuvem de cont\u00eaineres\" e n\u00e3o importa em qual host o cont\u00eainer est\u00e1 sendo executado.<\/li>\n<\/ul>\n<p>Para obter mais detalhes, confira a palestra de Bryan Cantrill sobre o Docker e o futuro dos cont\u00eaineres na produ\u00e7\u00e3o.<\/p>\n<p>Vamos dar uma olhada com um cont\u00eainer \"hello world\" e, em seguida, com um cluster de servidores Couchbase.<\/p>\n<h2>Registre-se em uma conta Joyent<\/h2>\n<p>Siga as instru\u00e7\u00f5es de registro no site <a href=\"https:\/\/www.joyent.com\/triton\/compute?utm_source=Google-PPC&amp;utm_campaign=Brand&amp;utm_content=joyent%20-%20phrase%20and%20exact&amp;utm_term=joyent&amp;gclid=CPre7cHF1NMCFcWOfgodKe4MFQ\">Joyent<\/a> site.<\/p>\n<p>Voc\u00ea tamb\u00e9m precisar\u00e1 adicionar sua chave SSH \u00e0 sua conta.<\/p>\n<h2>Atualize o cliente Docker para a vers\u00e3o 1.4.1 ou posterior<\/h2>\n<p>Verifique sua vers\u00e3o do Docker com:<\/p>\n<pre>$ docker --version\r\nDocker version 1.0.1, build 990021a\r\n<\/pre>\n<p>Se voc\u00ea estiver em uma vers\u00e3o anterior \u00e0 1.4.1 (como eu estava), poder\u00e1 atualizar o Docker por meio do comando <a href=\"https:\/\/github.com\/boot2docker\/osx-installer\/releases\">instaladores do boot2docker<\/a>.<\/p>\n<h2>Joyent + configura\u00e7\u00e3o do Docker<\/h2>\n<p>Obtenha o reposit\u00f3rio sdc-docker (sdc == Smart Data Center):<\/p>\n<pre>$ git clone https:\/\/github.com\/joyent\/sdc-docker.git\r\n<\/pre>\n<p>Realizar a configura\u00e7\u00e3o via:<\/p>\n<pre>$ cd sdc-docker\r\n$  .\/tools\/sdc-docker-setup.sh -k 165.225.168.22 $ACCOUNT ~\/.ssh\/$PRIVATE_KEY_FILE\r\n<\/pre>\n<p>Substitua os valores da seguinte forma:<\/p>\n<ul>\n<li><strong>$ACCOUNT<\/strong>Para obter isso, fa\u00e7a login na interface do usu\u00e1rio da Web da Joyent e acesse o menu Account (Conta) no menu suspenso no canto superior direito. Encontre a se\u00e7\u00e3o <strong>Nome de usu\u00e1rio<\/strong> e usar esse campo<\/li>\n<li><strong>$PRIVATE_KEY_FILE<\/strong>: o nome do arquivo em que sua chave privada est\u00e1 armazenada, normalmente ser\u00e1 <code>id_rsa<\/code><\/li>\n<\/ul>\n<p>Execute o comando e voc\u00ea ver\u00e1 o seguinte resultado:<\/p>\n<pre>Setting up Docker client for SDC using:\r\n    CloudAPI:        https:\/\/165.225.168.22\r\n    Account:         \r\n    Key:             \/home\/ubuntu\/.ssh\/id_rsa\r\n\r\n[..snip..]\r\n\r\nWrote certificate files to \/home\/ubuntu\/.sdc\/docker\/\r\n\r\nDocker service endpoint is: tcp:\/\/:2376\r\n\r\n* * *\r\nSuccess. Set your environment as follows:\r\n\r\n    export DOCKER_CERT_PATH=\/home\/ubuntu\/.sdc\/docker\/\r\n    export DOCKER_HOST=tcp:\/\/:2376\r\n    alias docker=\"docker --tls\"\r\n\r\nThen you should be able to run 'docker info' and see your account\r\nname 'SDCAccount: ' in the output.\r\n<\/pre>\n<p><strong>Exportar vari\u00e1veis de ambiente<\/strong><\/p>\n<p>Como a sa\u00edda acima sugere, copie e cole os comandos da sa\u00edda. Aqui est\u00e1 um exemplo de como isso ser\u00e1 (mas voc\u00ea deve copiar e colar a partir da sa\u00edda do comando, n\u00e3o do trecho abaixo):<\/p>\n<pre>$ export DOCKER_CERT_PATH=\/home\/ubuntu\/.sdc\/docker\/\r\n$ export DOCKER_HOST=tcp:\/\/:2376\r\n$ alias docker=\"docker --tls\"\r\n<\/pre>\n<h2><\/h2>\n<h2>Docker Hello World<\/h2>\n<p>Vamos criar uma imagem do docker do Ubuntu que diz hello world.<\/p>\n<p>Lembre-se de que voc\u00ea est\u00e1 executando o cliente Docker em sua esta\u00e7\u00e3o de trabalho, n\u00e3o na nuvem. Aqui est\u00e1 uma vis\u00e3o geral do que vai acontecer:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/june\/running-couchbase-server-under-docker-on-joyent\/overview.png\" \/><\/p>\n<p>Para iniciar o cont\u00eainer do docker::<\/p>\n<pre>$ docker run --rm ubuntu:14.04 echo \"Hello Docker World, from Joyent\"\r\n<\/pre>\n<p>Voc\u00ea dever\u00e1 ver o seguinte resultado:<\/p>\n<pre>Unable to find image 'ubuntu:14.04' locally\r\nPulling repository library\/ubuntu\r\n...\r\nHello Docker World, from Joyent\r\n<\/pre>\n<p>Al\u00e9m disso, como o <code>--rm<\/code> foi passado, o cont\u00eainer ter\u00e1 sido removido ap\u00f3s a sa\u00edda. Voc\u00ea pode verificar isso executando <code>docker ps -a<\/code>. Isso \u00e9 importante porque <strong>cont\u00eaineres parados incorrem em cobran\u00e7as no Joyent<\/strong>.<\/p>\n<p>Parab\u00e9ns! Voc\u00ea conseguiu um cont\u00eainer Docker \"hello world\" em execu\u00e7\u00e3o na Joyent.<\/p>\n<h2>Executar cont\u00eaineres do Couchbase Server<\/h2>\n<p>Agora \u00e9 hora de executar o Couchbase Server.<\/p>\n<p>Para iniciar tr\u00eas cont\u00eaineres do Couchbase Server, execute:<\/p>\n<pre>$ for i in `seq 1 3`; do \r\n      echo \"Starting container $i\"; \r\n      export container_$i=$(docker run --name couchbase-server-$i -d -P couchbase\/server); \r\n  done\r\n<\/pre>\n<p>Para confirmar que os cont\u00eaineres est\u00e3o ativos, execute:<\/p>\n<pre>$ docker ps\r\n<\/pre>\n<p>e voc\u00ea ver\u00e1:<\/p>\n<pre>CONTAINER ID        IMAGE                                       COMMAND             CREATED             STATUS              PORTS               NAMES\r\n5bea8901814c        couchbase\/server   \"couchbase-start\"   3 minutes ago       Up 2 minutes                            couchbase-server-1\r\nbef1f2f32726        couchbase\/server   \"couchbase-start\"   2 minutes ago       Up 2 minutes                            couchbase-server-2\r\n6f4e2a1e8e63        couchbase\/server   \"couchbase-start\"   2 minutes ago       Up About a minute                       couchbase-server-3\r\n<\/pre>\n<p>Nesse ponto, voc\u00ea ter\u00e1 vari\u00e1veis de ambiente definidas com os IDs de cada cont\u00eainer. Voc\u00ea pode verificar isso executando:<\/p>\n<pre>$ echo $container_1 &amp;&amp; echo $container_2 &amp;&amp; echo $container_3\r\n21264e44d66b4004b4828b7ae408979e7f71924aadab435aa9de662024a37b0e\r\nff9fb4db7b304e769f694802e6a072656825aa2059604ba4ab4d579bd2e5d18d\r\n0c6f8ca2951448e497d7e12026dcae4aeaf990ec51e047cf9d8b2cbdd9bd7668\r\n<\/pre>\n<h3>Obter endere\u00e7os IP p\u00fablicos dos cont\u00eaineres<\/h3>\n<p>Cada cont\u00eainer ter\u00e1 dois endere\u00e7os IP atribu\u00eddos:<\/p>\n<ul>\n<li>Um IP p\u00fablico, acess\u00edvel de qualquer lugar<\/li>\n<li>Um IP privado, acess\u00edvel apenas a partir de cont\u00eaineres\/m\u00e1quinas da sua conta Joyent<\/li>\n<\/ul>\n<p>Para obter o IP p\u00fablico, podemos usar o cliente Docker. (para obter o IP privado, voc\u00ea precisa usar as ferramentas Joyent SmartDataCenter, descritas abaixo)<\/p>\n<pre>$ container_1_ip=`docker inspect $container_1 | grep -i IPAddress | awk -F: '{print $2}' |  grep -oE \"b([0-9]{1,3}.){3}[0-9]{1,3}b\"`\r\n$ container_2_ip=`docker inspect $container_2 | grep -i IPAddress | awk -F: '{print $2}' |  grep -oE \"b([0-9]{1,3}.){3}[0-9]{1,3}b\"`\r\n$ container_3_ip=`docker inspect $container_3 | grep -i IPAddress | awk -F: '{print $2}' |  grep -oE \"b([0-9]{1,3}.){3}[0-9]{1,3}b\"`\r\n\r\n<\/pre>\n<p>Agora voc\u00ea ter\u00e1 os endere\u00e7os IP p\u00fablicos de cada cont\u00eainer definidos nas vari\u00e1veis de ambiente. Voc\u00ea pode verificar se funcionou via:<\/p>\n<pre>$ echo $container_1_ip &amp;&amp; echo $container_2_ip &amp;&amp; echo $container_3_ip\r\n165.225.185.11\r\n165.225.185.12\r\n165.225.185.13\r\n<\/pre>\n<h3>Conectar-se \u00e0 interface do usu\u00e1rio da Web do Couchbase<\/h3>\n<p>Abra o navegador em $container_1_ip:8091 e voc\u00ea ver\u00e1 a tela de boas-vindas do Couchbase:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/june\/running-couchbase-server-under-docker-on-joyent\/cb-setup.png\" \/><\/p>\n<p>Neste ponto, \u00e9 poss\u00edvel configurar o cluster acessando a interface do usu\u00e1rio da Web de cada n\u00f3 do Couchbase e seguindo o assistente de configura\u00e7\u00e3o. No entanto, caso voc\u00ea queira automatizar isso no futuro, vamos fazer isso pela linha de comando.<\/p>\n<h3>Configurar o primeiro n\u00f3 do Couchbase<\/h3>\n<p>Vamos escolher arbitrariamente <strong>cont\u00eainer_1<\/strong> como o primeiro n\u00f3 do cluster. Esse n\u00f3 \u00e9 especial no sentido de que outros n\u00f3s se juntar\u00e3o a ele.<\/p>\n<p>O comando a seguir executa essas opera\u00e7\u00f5es:<\/p>\n<ul>\n<li>Define o nome de usu\u00e1rio e a senha do administrador como Administrator \/ password (voc\u00ea deve alterar isso)<\/li>\n<li>Define o tamanho da RAM do cluster como 600 MB<\/li>\n<\/ul>\n<p>Observa\u00e7\u00e3o: o <code>-u admin -p password<\/code> deve ser deixado como est\u00e1, uma vez que ele est\u00e1 apenas passando o nome e a senha padr\u00e3o do administrador para fins de autentica\u00e7\u00e3o.<\/p>\n<pre>$ docker run --rm --entrypoint=\/opt\/couchbase\/bin\/couchbase-cli couchbase\/server \r\ncluster-init -c $container_1_ip \r\n--cluster-init-username=Administrator \r\n--cluster-init-password=password \r\n--cluster-init-ramsize=600 \r\n-u admin -p password\r\n<\/pre>\n<p>Voc\u00ea dever\u00e1 ver uma resposta como:<\/p>\n<pre>SUCCESS: init 165.225.185.11\r\n<\/pre>\n<h3>Criar um bucket padr\u00e3o<\/h3>\n<p>Um bucket \u00e9 equivalente a um banco de dados em sistemas RDMS t\u00edpicos.<\/p>\n<pre>$ docker run --rm --entrypoint=\/opt\/couchbase\/bin\/couchbase-cli couchbase\/server \r\nbucket-create -c $container_1_ip:8091 \r\n--bucket=default \r\n--bucket-type=couchbase \r\n--bucket-port=11211 \r\n--bucket-ramsize=600 \r\n--bucket-replica=1 \r\n-u Administrator -p password\r\n<\/pre>\n<p>Voc\u00ea deveria ver:<\/p>\n<pre>SUCCESS: bucket-create\r\n<\/pre>\n<h3>Adicionar o segundo n\u00f3 do Couchbase<\/h3>\n<p>Adicione o segundo n\u00f3 do Couchbase com este comando<\/p>\n<pre>$ docker run --rm --entrypoint=\/opt\/couchbase\/bin\/couchbase-cli couchbase\/server \r\nserver-add -c $container_1_ip \r\n-u Administrator -p password \r\n--server-add $container_2_ip \r\n--server-add-username Administrator \r\n--server-add-password password \r\n<\/pre>\n<p>Voc\u00ea deveria ver:<\/p>\n<pre><code>SUCCESS: server-add 165.225.185.12:8091\r\n<\/code><\/pre>\n<p>Para verificar se ele foi adicionado, execute:<\/p>\n<pre>$ docker run --rm --entrypoint=\/opt\/couchbase\/bin\/couchbase-cli couchbase\/server \r\nserver-list -c $container_1_ip \r\n-u Administrator -p password\r\n<\/pre>\n<p>que deve retornar a lista de n\u00f3s do Couchbase Server que agora fazem parte do cluster:<\/p>\n<pre>ns_1@165.225.185.11 165.225.185.11:8091 healthy active\r\nns_1@165.225.185.12 165.225.185.12:8091 healthy inactiveAdded\r\n<\/pre>\n<h3>Adicionar o terceiro n\u00f3 do Couchbase e rebalancear<\/h3>\n<p>Nesta etapa, faremos o seguinte:<\/p>\n<ul>\n<li>Adicionar o terceiro n\u00f3 do Couchbase<\/li>\n<li>Acionar um \"rebalanceamento\", que distribui os dados do bucket (vazio) pelo cluster<\/li>\n<\/ul>\n<pre>$ docker run --rm --entrypoint=\/opt\/couchbase\/bin\/couchbase-cli couchbase\/server \r\nrebalance -c $container_1_ip \r\n-u Administrator -p password \r\n--server-add $container_3_ip \r\n--server-add-username Administrator \r\n--server-add-password password \r\n<\/pre>\n<p>Voc\u00ea deveria ver:<\/p>\n<pre>INFO: rebalancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\r\nSUCCESS: rebalanced cluster\r\nclose failed in file object destructor:\r\nError in sys.excepthook:\r\n\r\nOriginal exception was:\r\n<\/pre>\n<p>Se voc\u00ea vir <strong>SUCESSO<\/strong>e depois funcionou. <em>(N\u00e3o sei ao certo por que o erro \"close failed in file ...\" est\u00e1 ocorrendo, mas at\u00e9 agora parece que ele pode ser ignorado com seguran\u00e7a).<\/em><\/p>\n<h3>Fa\u00e7a login na interface do usu\u00e1rio da Web<\/h3>\n<p>Abra seu navegador em $container_1_ip:8091 e voc\u00ea ver\u00e1 a tela de login do Coucbase:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/june\/running-couchbase-server-under-docker-on-joyent\/cb-login.png\" \/><\/p>\n<p>Fa\u00e7a login com:<\/p>\n<ul>\n<li>Nome de usu\u00e1rio: <strong>Administrador<\/strong><\/li>\n<li>Senha: <strong>senha<\/strong><\/li>\n<\/ul>\n<p>E voc\u00ea ver\u00e1 os n\u00f3s do Couchbase:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2015\/june\/running-couchbase-server-under-docker-on-joyent\/cb-nodes.png\" \/><\/p>\n<p>Parab\u00e9ns! Voc\u00ea tem um cluster do Couchbase Server instalado e em execu\u00e7\u00e3o no Joyent Triton.<\/p>\n<h2>Desmontagem<\/h2>\n<p>Para parar e remover os cont\u00eaineres do servidor Couchbase, execute:<\/p>\n<pre>$ docker stop $container_1 $container_2 $container_3\r\n$ docker rm $container_1 $container_2 $container_3\r\n<\/pre>\n<p>Para verificar se n\u00e3o h\u00e1 mais cont\u00eaineres em execu\u00e7\u00e3o ou no estado parado, execute <code>docker ps -a<\/code> e voc\u00ea ver\u00e1 uma lista vazia.<\/p>\n<h2>Instala\u00e7\u00e3o das ferramentas do SDC (opcional)<\/h2>\n<p>A instala\u00e7\u00e3o das ferramentas do Joyent Smart Data Center (SDC) permitir\u00e1 que voc\u00ea obtenha mais visibilidade do seu cluster de cont\u00eaineres, por exemplo, a possibilidade de visualizar o IP interno de cada cont\u00eainer.<\/p>\n<p>Veja como instalar o pacote sdc-tools.<\/p>\n<h3>Instalar o smartdc<\/h3>\n<p>Primeiro, instale o NodeJS + NPM<\/p>\n<p>Instale o smartdc:<\/p>\n<pre><code>npm install -g smartdc\r\n<\/code><\/pre>\n<h3>Configurar vari\u00e1veis de ambiente<\/h3>\n<pre>$ export SDC_URL=https:\/\/us-east-3b.api.joyent.com\r\n$ export SDC_ACCOUNT=\r\n$ export SDC_KEY_ID=$(ssh-keygen -l -f $HOME\/.ssh\/id_rsa.pub | awk '{print $2}')\r\n<\/pre>\n<p>Substitua os valores da seguinte forma:<\/p>\n<ul>\n<li><strong>CONTA<\/strong>Para obter isso, fa\u00e7a login na interface do usu\u00e1rio da Web da Joyent e acesse o menu Account (Conta) no menu suspenso no canto superior direito. Encontre a se\u00e7\u00e3o <strong>Nome de usu\u00e1rio<\/strong> e usar esse campo<\/li>\n<\/ul>\n<h3>Lista de m\u00e1quinas<\/h3>\n<p>Executar <code>m\u00e1quinas da lista sdc<\/code> para listar todos os cont\u00eaineres em execu\u00e7\u00e3o na sua conta Joyent. Seu resultado deve ser algo parecido com isto:<\/p>\n<pre>$ sdc-listmachines\r\n[\r\n{\r\n    \"id\": \"0c6f8ca2-9514-48e4-97d7-e12026dcae4a\",\r\n    \"name\": \"couchbase-server-3\",\r\n    \"type\": \"smartmachine\",\r\n    \"state\": \"running\",\r\n    \"image\": \"335a8046-0749-1174-5666-6f084472b5ef\",\r\n    \"ips\": [\r\n      \"192.168.128.32\",\r\n      \"165.225.185.13\"\r\n    ],\r\n    \"memory\": 1024,\r\n    \"disk\": 25600,\r\n    \"metadata\": {},\r\n    \"tags\": {},\r\n    \"created\": \"2015-03-26T14:50:31.196Z\",\r\n    \"updated\": \"2015-03-26T14:50:45.000Z\",\r\n    \"networks\": [\r\n      \"7cfe29d4-e313-4c3b-a967-a28ea34342e9\",\r\n      \"178967cb-8d11-4f53-8434-9c91ff819a0d\"\r\n    ],\r\n    \"dataset\": \"335a8046-0749-1174-5666-6f084472b5ef\",\r\n    \"primaryIp\": \"165.225.185.13\",\r\n    \"firewall_enabled\": false,\r\n    \"compute_node\": \"44454c4c-4400-1046-8050-b5c04f383432\",\r\n    \"package\": \"t4-standard-1G\"\r\n  },\r\n]\r\n<\/pre>\n<h3>Localizar o IP privado de uma m\u00e1quina individual<\/h3>\n<pre>$ sdc-getmachine  | json -aH ips | json -aH | egrep \"10.|192.\u201d<\/pre>\n<h2>Refer\u00eancias<\/h2>\n<ul>\n<li>API nativa do Docker versus API Joyent Triton<\/li>\n<li>https:\/\/www.joyent.com\/blog\/container-service-preview<\/li>\n<li>https:\/\/www.joyent.com\/blog\/docker-bake-off-aws-vs-joyent<\/li>\n<li>https:\/\/github.com\/joyent\/sdc-docker<\/li>\n<li>https:\/\/github.com\/joyent\/sdc-docker\/blob\/master\/docs\/divergence.md<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Joyent has recently announced their new Triton Docker container hosting service. There are several advantages of running Docker containers on Triton rather than on a more traditional cloud hosting platform: Better performance since there is no hardware level virtualization overhead. [&hellip;]<\/p>","protected":false},"author":59,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[9030],"class_list":["post-1947","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Running Couchbase Server under Docker on Joyent Trident - 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\/pt\/running-couchbase-server-under-docker-on-joyent\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Running Couchbase Server under Docker on Joyent Trident\" \/>\n<meta property=\"og:description\" content=\"Joyent has recently announced their new Triton Docker container hosting service. There are several advantages of running Docker containers on Triton rather than on a more traditional cloud hosting platform: Better performance since there is no hardware level virtualization overhead. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/running-couchbase-server-under-docker-on-joyent\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-03T06:41:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-05-03T21:22:58+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=\"Traun Leyden, Senior Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Traun Leyden, Senior Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/\"},\"author\":{\"name\":\"Traun Leyden, Senior Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b9cdad74fec5e145772f6b482d307d81\"},\"headline\":\"Running Couchbase Server under Docker on Joyent Trident\",\"datePublished\":\"2015-06-03T06:41:54+00:00\",\"dateModified\":\"2017-05-03T21:22:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/\"},\"wordCount\":1030,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/\",\"name\":\"Running Couchbase Server under Docker on Joyent Trident - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-06-03T06:41:54+00:00\",\"dateModified\":\"2017-05-03T21:22:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#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\/running-couchbase-server-under-docker-on-joyent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Running Couchbase Server under Docker on Joyent Trident\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\/b9cdad74fec5e145772f6b482d307d81\",\"name\":\"Traun Leyden, Senior Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/30157f938e2acfb207327cb7f2dcb30f\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2d64cd81c39730f92585d245c0e9595289dedd208ad8cb9513c055c72647873f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2d64cd81c39730f92585d245c0e9595289dedd208ad8cb9513c055c72647873f?s=96&d=mm&r=g\",\"caption\":\"Traun Leyden, Senior Software Engineer, Couchbase\"},\"description\":\"Traun Leyden is a Senior Software Engineer at Couchbase currently working on the Touch-DB\/Android project. Prior to Couchbase, Traun co-founded Signature Labs, a venture-backed startup that developed an iOS mobile CRM geolocation app that was deployed in Fortune 500 companies. Among his accomplishments, Traun developed a highly popular Android ringer control app called \\\"Buzzoff\\\" and created an open source Neural Network library written in Go that leverages Go channels\/goroutines to achieve high computation concurrency.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/traun-leyden\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Running Couchbase Server under Docker on Joyent Trident - 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\/pt\/running-couchbase-server-under-docker-on-joyent\/","og_locale":"pt_BR","og_type":"article","og_title":"Running Couchbase Server under Docker on Joyent Trident","og_description":"Joyent has recently announced their new Triton Docker container hosting service. There are several advantages of running Docker containers on Triton rather than on a more traditional cloud hosting platform: Better performance since there is no hardware level virtualization overhead. [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/running-couchbase-server-under-docker-on-joyent\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-06-03T06:41:54+00:00","article_modified_time":"2017-05-03T21:22:58+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":"Traun Leyden, Senior Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Traun Leyden, Senior Software Engineer, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/"},"author":{"name":"Traun Leyden, Senior Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b9cdad74fec5e145772f6b482d307d81"},"headline":"Running Couchbase Server under Docker on Joyent Trident","datePublished":"2015-06-03T06:41:54+00:00","dateModified":"2017-05-03T21:22:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/"},"wordCount":1030,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/","url":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/","name":"Running Couchbase Server under Docker on Joyent Trident - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-06-03T06:41:54+00:00","dateModified":"2017-05-03T21:22:58+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/running-couchbase-server-under-docker-on-joyent\/#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\/running-couchbase-server-under-docker-on-joyent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Running Couchbase Server under Docker on Joyent Trident"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/b9cdad74fec5e145772f6b482d307d81","name":"Traun Leyden, engenheiro de software s\u00eanior, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/30157f938e2acfb207327cb7f2dcb30f","url":"https:\/\/secure.gravatar.com\/avatar\/2d64cd81c39730f92585d245c0e9595289dedd208ad8cb9513c055c72647873f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2d64cd81c39730f92585d245c0e9595289dedd208ad8cb9513c055c72647873f?s=96&d=mm&r=g","caption":"Traun Leyden, Senior Software Engineer, Couchbase"},"description":"Traun Leyden \u00e9 engenheiro de software s\u00eanior da Couchbase e atualmente trabalha no projeto Touch-DB\/Android. Antes da Couchbase, Traun foi cofundador da Signature Labs, uma startup apoiada por capital de risco que desenvolveu um aplicativo de geolocaliza\u00e7\u00e3o de CRM m\u00f3vel para iOS que foi implantado em empresas da Fortune 500. Entre suas realiza\u00e7\u00f5es, Traun desenvolveu um aplicativo de controle de campainha para Android altamente popular chamado \"Buzzoff\" e criou uma biblioteca de rede neural de c\u00f3digo aberto escrita em Go que aproveita os canais\/goroutines do Go para obter alta simultaneidade de computa\u00e7\u00e3o.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/traun-leyden\/"}]}},"authors":[{"term_id":9030,"user_id":59,"is_guest":0,"slug":"traun-leyden","display_name":"Traun Leyden, Senior Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/2d64cd81c39730f92585d245c0e9595289dedd208ad8cb9513c055c72647873f?s=96&d=mm&r=g","author_category":"","last_name":"Leyden","first_name":"Traun","job_title":"","user_url":"","description":"Traun Leyden \u00e9 engenheiro de software s\u00eanior da Couchbase e atualmente trabalha no projeto Touch-DB\/Android. Antes da Couchbase, Traun foi cofundador da Signature Labs, uma startup apoiada por capital de risco que desenvolveu um aplicativo de geolocaliza\u00e7\u00e3o de CRM m\u00f3vel para iOS que foi implantado em empresas da Fortune 500. Entre suas realiza\u00e7\u00f5es, Traun desenvolveu um aplicativo de controle de campainha para Android altamente popular chamado \"Buzzoff\" e criou uma biblioteca de rede neural de c\u00f3digo aberto escrita em Go que aproveita os canais\/goroutines do Go para obter alta simultaneidade de computa\u00e7\u00e3o."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/59"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1947"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1947\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1947"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}