{"id":2260,"date":"2017-01-04T00:29:47","date_gmt":"2017-01-04T00:29:46","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2260"},"modified":"2023-06-21T06:44:16","modified_gmt":"2023-06-21T13:44:16","slug":"couchbase-cluster-docker-swarm-compose-machine","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-cluster-docker-swarm-compose-machine\/","title":{"rendered":"Cluster do Couchbase no Docker Swarm usando o Docker Compose e o Docker Machine"},"content":{"rendered":"<p>Esta postagem do blog explicar\u00e1 como criar e dimensionar um cluster do Couchbase usando a armadura completa do Docker - Docker Machine, <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/deploy-docker-compose-services-swarm\/\">Docker Swarm e Docker Compose<\/a>. Aqui est\u00e1 o que faremos:<\/p>\n<ul>\n<li>Criar um cluster Docker Swarm de 3 n\u00f3s usando o Docker Machine<\/li>\n<li>Executar uma inst\u00e2ncia do Couchbase em dois n\u00f3s<\/li>\n<li>Criar um cluster<\/li>\n<li>Reequilibrar o cluster<\/li>\n<li>Dimensionar e reequilibrar o cluster novamente<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2802\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/couchbase-docker-swarm-0-1024x558.png\" alt=\" couchbase-docker-swarm-0-1024x558\" width=\"1024\" height=\"558\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/couchbase-docker-swarm-0-1024x558.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/couchbase-docker-swarm-0-1024x558-300x163.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/couchbase-docker-swarm-0-1024x558-768x419.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/couchbase-docker-swarm-0-1024x558-20x11.png 20w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2>Cluster do Docker Swarm usando o Consul<\/h2>\n<p>Crie um cluster do Docker Swarm de tr\u00eas n\u00f3s usando o Docker Machine:<\/p>\n<pre class=\"lang:default decode:true\"># Docker Machine for Consul\r\ndocker-machine \r\n   create \r\n   -d virtualbox \r\n   consul-machine\r\n\r\n# Start Consul\r\ndocker $(docker-machine config consul-machine) run -d --restart=always \r\n         -p \"8500:8500\" \r\n         -h \"consul\" \r\n         progrium\/consul -server -bootstrap\r\n\r\n# Docker Swarm master\r\ndocker-machine \r\n  create \r\n  -d virtualbox \r\n  --swarm \r\n  --swarm-master \r\n  --swarm-discovery=\"consul:\/\/$(docker-machine ip consul-machine):8500\" \r\n  --engine-opt=\"cluster-store=consul:\/\/$(docker-machine ip consul-machine):8500\" \r\n  --engine-opt=\"cluster-advertise=eth1:2376\" \r\n  swarm-master\r\n\r\n# Docker Swarm node-01\r\ndocker-machine \r\n  create \r\n  -d virtualbox \r\n  --swarm \r\n  --swarm-discovery=\"consul:\/\/$(docker-machine ip consul-machine):8500\" \r\n  --engine-opt=\"cluster-store=consul:\/\/$(docker-machine ip consul-machine):8500\" \r\n  --engine-opt=\"cluster-advertise=eth1:2376\" \r\n  swarm-node-01\r\n\r\n# Docker Swarm node-02\r\ndocker-machine \r\n  create \r\n  -d virtualbox \r\n  --virtualbox-disk-size \"5000\" \r\n  --swarm \r\n  --swarm-discovery=\"consul:\/\/$(docker-machine ip consul-machine):8500\" \r\n  --engine-opt=\"cluster-store=consul:\/\/$(docker-machine ip consul-machine):8500\" \r\n  --engine-opt=\"cluster-advertise=eth1:2376\" \r\n  swarm-node-02\r\n\r\n# Configure to use Docker Swarm cluster\r\neval \"$(docker-machine env --swarm swarm-master)\"<\/pre>\n<p><a href=\"https:\/\/docs.docker.com\/swarm\/provision-with-machine\/\">Provisione um cluster do Swarm com o Docker Machine<\/a>\u00a0fornecem mais detalhes sobre o porqu\u00ea e o que \u00e9 feito nesse script. Aqui est\u00e1 um resumo:<\/p>\n<ul>\n<li>Criar um Docker Machine e executar o Consul para descoberta de servi\u00e7os<\/li>\n<li>Crie tr\u00eas Docker Machines - um para o Master e dois para os n\u00f3s Worker. Cada m\u00e1quina \u00e9 configurada para fazer parte de um cluster Swarm usando <code>--swarm<\/code>. Ele tamb\u00e9m usa a descoberta de servi\u00e7o Consul especificada usando <code>--swarm-discovery<\/code>.<\/li>\n<\/ul>\n<h2>N\u00f3s do Couchbase no Docker Swarm<\/h2>\n<p>Crie duas inst\u00e2ncias do Couchbase usando o Docker Compose:<\/p>\n<pre class=\"lang:default decode:true\">version: \"2\"\r\nservices:\r\n  db:\r\n    image: arungupta\/couchbase\r\n    network_mode: \"host\"\r\n    ports:\r\n      - 8091:8091\r\n      - 8092:8092\r\n      - 8093:8093\r\n      - 11210:11210<\/pre>\n<p><code>arungupta\/couchbase<\/code> \u00e9 usada aqui. Essa imagem \u00e9 definida em\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/docker-images\/tree\/master\/couchbase\">Imagem do Docker do Couchbase.<\/a>\u00a0Ele usa o\u00a0<a href=\"https:\/\/hub.docker.com\/_\/couchbase\/\">Imagem oficial do Docker do Couchbase<\/a>\u00a0adicionar<br \/>\no configura conforme explicado:<\/p>\n<ol>\n<li>Configura a mem\u00f3ria para \u00edndice e dados<\/li>\n<li>Configura o servidor Couchbase com o servi\u00e7o de \u00edndice, dados e consulta<\/li>\n<li>Configura as credenciais de nome de usu\u00e1rio e senha<\/li>\n<li>Carrega o <code>amostra de viagem<\/code> balde<\/li>\n<\/ol>\n<p>O arquivo de composi\u00e7\u00e3o usa <code>hospedeiro<\/code> rede. Isso \u00e9 equivalente a usar <code>--net=host<\/code> na CLI de execu\u00e7\u00e3o do docker. Ele permite que o cont\u00eainer use a pilha de rede do host. Isso tamb\u00e9m limita a execu\u00e7\u00e3o de apenas um \u00fanico cont\u00eainer do Couchbase no<br \/>\num \u00fanico Docker Machine. Isso significa que o nosso cluster do Couchbase pode ser dimensionado com base no n\u00famero de Docker Machines - 3 no nosso caso. O comando exato para usar esse arquivo Compose \u00e9:<\/p>\n<pre class=\"lang:default decode:true\">docker-compose scale db=2\r\nWARNING: The \"db\" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.\r\nCreating and starting couchbasedockerswarm_db_1 ... \r\nCreating and starting couchbasedockerswarm_db_2 ... \r\nPulling db (arungupta\/couchbase:latest)...\r\nswarm-node-02: Pulling arungupta\/couchbase:latest...\r\nswarm-master: Pulling arungupta\/couchbase:latest...\r\nswarm-node-01: Pulling arungupta\/couchbase:latest...\r\nPulling db (arungupta\/couchbase:latest)...\r\nswarm-node-02: Pulling arungupta\/couchbase:latest... : downloaded\r\nCreating and starting couchbasedockerswarm_db_1 ... done\r\nCreating and starting couchbasedockerswarm_db_2 ... done<\/pre>\n<p>H\u00e1 tr\u00eas n\u00f3s no cluster do Docker Swarm. O n\u00f3 <a href=\"https:\/\/docs.docker.com\/swarm\/scheduler\/strategy\/\">estrat\u00e9gia de agendamento padr\u00e3o<\/a> \u00e9 <code>propaga\u00e7\u00e3o<\/code> e, portanto, os cont\u00eaineres ser\u00e3o distribu\u00eddos em diferentes hosts. Isso \u00e9 evidente<br \/>\npor <code>docker ps<\/code>:<\/p>\n<pre class=\"lang:default decode:true\">docker ps\r\nCONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES\r\n4c8c149f4e34        arungupta\/couchbase   \"\/entrypoint.sh \/opt\/\"   44 seconds ago      Up 44 seconds                           swarm-node-02\/couchbasedockerswarm_db_1\r\nd3b6a1dbddb5        arungupta\/couchbase   \"\/entrypoint.sh \/opt\/\"   44 seconds ago      Up 44 seconds                           swarm-node-01\/couchbasedockerswarm_db_2<\/pre>\n<p>Observe que um servidor Couchbase est\u00e1 sendo executado em <code>n\u00f3 de enxame-01<\/code> e outro em <code>n\u00f3 de enxame-02<\/code>. Cada servidor \u00e9 configurado com um nome de usu\u00e1rio de administrador <code>Administrador<\/code> e senha\u00a0<code>senha<\/code>. Descubra o IP<br \/>\nendere\u00e7o do Docker Machine:<\/p>\n<pre class=\"lang:default decode:true\">docker-machine ls\r\nNAME             ACTIVE      DRIVER       STATE     URL                         SWARM                   DOCKER    ERRORS\r\nconsul-machine   -           virtualbox   Running   tcp:\/\/192.168.99.106:2376                           v1.11.1   \r\ndefault          -           virtualbox   Running   tcp:\/\/192.168.99.100:2376                           v1.11.0   \r\nswarm-master     * (swarm)   virtualbox   Running   tcp:\/\/192.168.99.107:2376   swarm-master (master)   v1.11.1   \r\nswarm-node-01    -           virtualbox   Running   tcp:\/\/192.168.99.108:2376   swarm-master            v1.11.1   \r\nswarm-node-02    -           virtualbox   Running   tcp:\/\/192.168.99.109:2376   swarm-master            v1.11.1<\/pre>\n<p>Se voc\u00ea tiver <a href=\"https:\/\/stedolan.github.io\/jq\/download\/\">jq instalado<\/a>\u00a0ent\u00e3o o endere\u00e7o IP pode ser convenientemente encontrado como:<\/p>\n<pre class=\"lang:default decode:true\">docker-machine inspect swarm-node-01 | jq \".Driver.IPAddress\"\r\n\"192.168.99.108\"<\/pre>\n<h2>Cluster do Couchbase no Docker Swarm<\/h2>\n<p>Todos os n\u00f3s do servidor Couchbase s\u00e3o criados iguais. Isso permite que o cluster do Couchbase seja realmente dimensionado horizontalmente para atender \u00e0s demandas crescentes de seus aplicativos. Os n\u00f3s do Couchbase em execu\u00e7\u00e3o independente podem ser adicionados a um cluster invocando o comando <code>adicionar servidor<\/code> comando CLI. Normalmente, esse \u00e9 um processo de duas etapas. A primeira etapa \u00e9 adicionar um ou mais n\u00f3s. A segunda etapa reequilibra o cluster em que os dados nos n\u00f3s existentes s\u00e3o reequilibrados no cluster atualizado. No nosso caso, um \u00fanico n\u00f3 do Couchbase<br \/>\nest\u00e1 sendo executado em cada m\u00e1quina Docker. Vamos escolher o endere\u00e7o IP de qualquer n\u00f3 do Couchbase e adicionar o endere\u00e7o IP do outro n\u00f3:<\/p>\n<pre class=\"lang:default decode:true\">docker run -it arungupta\/couchbase \r\ncouchbase-cli \r\nserver-add \r\n--cluster=`docker-machine inspect swarm-node-01 | jq -r \".Driver.IPAddress\"`:8091 \r\n--user Administrator \r\n--password password \r\n--server-add=`docker-machine inspect swarm-node-02 | jq -r \".Driver.IPAddress\"` \r\n--server-add-username=Administrator \r\n--server-add-password=password\r\nSUCCESS: server-add 192.168.99.109:8091\r\n<\/pre>\n<p>O Console da Web do Couchbase para ambos os n\u00f3s mostrar\u00e1 uma sa\u00edda semelhante:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-1-1024x375.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13965\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-1-1024x375.png\" alt=\"couchbase-docker-swarm-1\" width=\"604\" height=\"221\" \/><\/a><br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-2-1024x519.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13966\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-2-1024x519.png\" alt=\"couchbase-docker-swarm-2\" width=\"604\" height=\"306\" \/><\/a><br \/>\nIsso mostra que os dois n\u00f3s agora formam um cluster e precisam ser rebalanceados.<\/p>\n<h2>Rebalanceamento do cluster do Couchbase<\/h2>\n<p>Agora, vamos reequilibrar o cluster:<\/p>\n<pre class=\"lang:default decode:true\">docker run -it arungupta\/couchbase couchbase-cli rebalance --cluster=`docker-machine inspect swarm-node-01 | jq -r \".Driver.IPAddress\"`:8091 --user Administrator --password password \r\nINFO: rebalancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \r\nSUCCESS: rebalanced cluster<\/pre>\n<p>O Console da Web do Couchbase ser\u00e1 atualizado para mostrar que o rebalanceamento est\u00e1 ocorrendo:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-3-1024x392.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13967\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-3-1024x392.png\" alt=\"couchbase-docker-swarm-3\" width=\"604\" height=\"231\" \/><\/a><br \/>\nE, finalmente, voc\u00ea ver\u00e1 um cluster reequilibrado:<\/p>\n<p><a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-4-1024x386.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13968\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-4-1024x386.png\" alt=\"couchbase-docker-swarm-4\" width=\"604\" height=\"228\" \/><\/a><\/p>\n<h2>Dimensionar e reequilibrar o cluster do Couchbase<\/h2>\n<p>Dimensionar o cluster do Couchbase:<\/p>\n<pre class=\"lang:default decode:true\">docker-compose scale db=3\r\nWARNING: The \"db\" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.\r\nCreating and starting couchbasedockerswarm_db_3 ... done<\/pre>\n<p>Verifique se o cont\u00eainer est\u00e1 sendo executado em um Docker Machine diferente:<\/p>\n<pre class=\"lang:default decode:true\">docker ps\r\nCONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES\r\n02f94e2bbd3e        arungupta\/couchbase   \"\/entrypoint.sh \/opt\/\"   9 seconds ago       Up 8 seconds                            swarm-master\/couchbasedockerswarm_db_3\r\n4c8c149f4e34        arungupta\/couchbase   \"\/entrypoint.sh \/opt\/\"   About an hour ago   Up About an hour                        swarm-node-02\/couchbasedockerswarm_db_1\r\nd3b6a1dbddb5        arungupta\/couchbase   \"\/entrypoint.sh \/opt\/\"   About an hour ago   Up About an hour                        swarm-node-01\/couchbasedockerswarm_db_2<\/pre>\n<p>Conforme mencionado anteriormente, o dimensionamento de um cluster do Couchbase \u00e9 um processo de duas etapas. Isso ocorre porque, normalmente, voc\u00ea adiciona v\u00e1rios servidores e, em seguida, reequilibra o cluster. No entanto, nos casos em que voc\u00ea s\u00f3 precisa adicionar um \u00fanico n\u00f3 do Couchbase e depois fazer o rebalanceamento,<br \/>\no comando rebalance pode ser usado para isso. Em nosso caso, isso \u00e9 feito conforme mostrado:<\/p>\n<pre class=\"lang:default decode:true\">docker run -it arungupta\/couchbase couchbase-cli rebalance --cluster=`docker-machine inspect swarm-node-01 | jq -r \".Driver.IPAddress\"`:8091 --user Administrator --password password --server-add=`docker-machine inspect swarm-master | jq -r \".Driver.IPAddress\"` --server-add-username=Administrator --server-add-password=password\r\nSUCCESS: server-add 192.168.99.107:8091\r\nINFO: rebalancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \r\nSUCCESS: rebalanced cluster<\/pre>\n<p>O cluster reequilibrado agora tem a seguinte apar\u00eancia:<br \/>\n<a href=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-5-1024x409.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-13971\" src=\"\/wp-content\/original-assets\/may-2016\/couchbase-cluster-on-docker-swarm-using-docker-compose-and-docker-machine\/couchbase-docker-swarm-5-1024x409.png\" alt=\"couchbase-docker-swarm-5\" width=\"604\" height=\"241\" \/><\/a><\/p>\n<p>Este blog mostrou como voc\u00ea pode criar e dimensionar facilmente um cluster do Couchbase usando o Docker Swarm, Machine e Compose. Aproveite! Leitura adicional ...<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/introduction\/intro.html\">Portal do desenvolvedor do Couchbase Server<\/a><\/li>\n<li><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/concepts\/concepts-intro.html\">Conceitos do servidor Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.1\/clustersetup\/manage-cluster-intro.html\">Configura\u00e7\u00e3o do cluster do Couchbase<\/a><\/li>\n<li>Perguntas sobre <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">StackOverflow,<\/a>\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">F\u00f3runs<\/a>\u00a0ou <a href=\"https:\/\/couchbase-community.slack.com\/\">Canal do Slack<\/a><\/li>\n<li>Siga-nos\u00a0<a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/next\/\">Couchbase 4.5 Beta<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>This blog post will explain how to create and scale\u00a0a Couchbase Cluster using full armor of Docker &#8211; Docker Machine, Docker Swarm and Docker Compose. Here is what we&#8217;ll do: Create a 3-node Docker Swarm Cluster using Docker Machine Run\u00a0a [&hellip;]<\/p>","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-2260","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.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Cluster using full armor of Docker swarm<\/title>\n<meta name=\"description\" content=\"The blog explains how to create and scale a Couchbase Cluster using full armor of Docker \u2013 Docker Machine, Docker Swarm and Docker Compose.\" \/>\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\/couchbase-cluster-docker-swarm-compose-machine\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Cluster on Docker Swarm using Docker Compose and Docker Machine\" \/>\n<meta property=\"og:description\" content=\"The blog explains how to create and scale a Couchbase Cluster using full armor of Docker \u2013 Docker Machine, Docker Swarm and Docker Compose.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-cluster-docker-swarm-compose-machine\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-04T00:29:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-21T13:44:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/couchbase-docker-swarm-0-1024x558.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=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Couchbase Cluster on Docker Swarm using Docker Compose and Docker Machine\",\"datePublished\":\"2017-01-04T00:29:46+00:00\",\"dateModified\":\"2023-06-21T13:44:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/\"},\"wordCount\":641,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/\",\"name\":\"Couchbase Cluster using full armor of Docker swarm\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-04T00:29:46+00:00\",\"dateModified\":\"2023-06-21T13:44:16+00:00\",\"description\":\"The blog explains how to create and scale a Couchbase Cluster using full armor of Docker \u2013 Docker Machine, Docker Swarm and Docker Compose.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#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\/couchbase-cluster-docker-swarm-compose-machine\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Cluster on Docker Swarm using Docker Compose and Docker Machine\"}]},{\"@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\/39d8caed0f536489b6aa6e8d31ee631f\",\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\/pt\/author\/arun-gupta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Cluster using full armor of Docker swarm","description":"The blog explains how to create and scale a Couchbase Cluster using full armor of Docker \u2013 Docker Machine, Docker Swarm and Docker Compose.","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\/couchbase-cluster-docker-swarm-compose-machine\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase Cluster on Docker Swarm using Docker Compose and Docker Machine","og_description":"The blog explains how to create and scale a Couchbase Cluster using full armor of Docker \u2013 Docker Machine, Docker Swarm and Docker Compose.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-cluster-docker-swarm-compose-machine\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-04T00:29:46+00:00","article_modified_time":"2023-06-21T13:44:16+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/01\/couchbase-docker-swarm-0-1024x558.png","type":"","width":"","height":""}],"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":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Couchbase Cluster on Docker Swarm using Docker Compose and Docker Machine","datePublished":"2017-01-04T00:29:46+00:00","dateModified":"2023-06-21T13:44:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/"},"wordCount":641,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/","name":"Couchbase Cluster using full armor of Docker swarm","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-04T00:29:46+00:00","dateModified":"2023-06-21T13:44:16+00:00","description":"The blog explains how to create and scale a Couchbase Cluster using full armor of Docker \u2013 Docker Machine, Docker Swarm and Docker Compose.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-cluster-docker-swarm-compose-machine\/#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\/couchbase-cluster-docker-swarm-compose-machine\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Cluster on Docker Swarm using Docker Compose and Docker Machine"}]},{"@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\/39d8caed0f536489b6aa6e8d31ee631f","name":"Arun Gupta, vice-presidente de defesa do desenvolvedor, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@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 \u00e9 o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experi\u00eancia na lideran\u00e7a de equipes multifuncionais para desenvolver e executar estrat\u00e9gias, planejamento e execu\u00e7\u00e3o de conte\u00fado, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e \u00e9 membro fundador da equipe Java EE. Gupta \u00e9 autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experi\u00eancia em palestras em mais de 40 pa\u00edses sobre uma infinidade de t\u00f3picos e \u00e9 um JavaOne Rock Star h\u00e1 tr\u00eas anos consecutivos. Gupta tamb\u00e9m fundou o cap\u00edtulo Devoxx4Kids nos EUA e continua a promover a educa\u00e7\u00e3o tecnol\u00f3gica entre as crian\u00e7as. Autor de v\u00e1rios livros sobre tecnologia, corredor \u00e1vido, viajante do mundo inteiro, campe\u00e3o de Java, l\u00edder de JUG, membro do NetBeans Dream Team e capit\u00e3o do Docker, ele pode ser facilmente acessado em @arungupta.","sameAs":["https:\/\/x.com\/arungupta"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/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 \u00e9 o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experi\u00eancia na lideran\u00e7a de equipes multifuncionais para desenvolver e executar estrat\u00e9gias, planejamento e execu\u00e7\u00e3o de conte\u00fado, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e \u00e9 membro fundador da equipe Java EE.\r\n\r\nGupta \u00e9 autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experi\u00eancia em palestras em mais de 40 pa\u00edses sobre diversos t\u00f3picos e \u00e9 um JavaOne Rock Star h\u00e1 tr\u00eas anos consecutivos. Gupta tamb\u00e9m fundou o cap\u00edtulo Devoxx4Kids nos EUA e continua a promover a educa\u00e7\u00e3o tecnol\u00f3gica entre as crian\u00e7as. Autor de v\u00e1rios livros sobre tecnologia, corredor \u00e1vido, viajante do mundo inteiro, campe\u00e3o de Java, l\u00edder de JUG, membro do NetBeans Dream Team e capit\u00e3o do Docker, ele pode ser facilmente acessado em @arungupta."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2260","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\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2260"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2260\/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=2260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2260"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}