{"id":2689,"date":"2017-02-15T21:55:34","date_gmt":"2017-02-16T05:55:34","guid":{"rendered":"http:\/\/www.couchbase.com\/blog\/?p=2689"},"modified":"2023-09-11T01:42:18","modified_gmt":"2023-09-11T08:42:18","slug":"stateful-docker-containers-portworx-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/stateful-docker-containers-portworx-couchbase\/","title":{"rendered":"Cont\u00eaineres com estado usando Portworx e Couchbase"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2691\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/px-logo-300x110.png\" alt=\"Portworx Logo\" width=\"300\" height=\"110\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/px-logo-300x110.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/px-logo-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/px-logo.png 753w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1109\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/logo-300x69.png\" alt=\"Couchbase Logo\" width=\"300\" height=\"69\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/logo-300x69.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/logo-1024x236.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/logo-768x177.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/logo-1536x354.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/logo-2048x472.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/logo-20x5.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/logo-1320x304.png 1320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Os cont\u00eaineres s\u00e3o feitos para serem ef\u00eameros e, portanto, escalam muito bem para aplicativos sem estado. Os cont\u00eaineres com estado, como o Couchbase, precisam ser tratados de forma diferente. <a href=\"https:\/\/thenewstack.io\/methods-dealing-container-storage\/\">Gerenciando a persist\u00eancia para cont\u00eaineres do Docker<\/a>\u00a0fornecem uma excelente vis\u00e3o geral de como gerenciar a persist\u00eancia para cont\u00eaineres com estado.<\/p>\n<p>Este blog explicar\u00e1 como usar o <a href=\"https:\/\/docs.docker.com\/engine\/extend\/plugins_volume\/\">Plug-ins de volume do Docker<\/a> e <a href=\"https:\/\/portworx.com\/\">Portworx<\/a> para criar um cont\u00eainer com estado.<\/p>\n<h2 id=\"user-content-why-a-href-https-portworx-com-portworx-a\">Por que a Portworx?<\/h2>\n<p><a href=\"https:\/\/portworx.com\/\">Portworx<\/a> \u00e9 um servi\u00e7o de dados de cont\u00eainer f\u00e1cil de implantar que oferece persist\u00eancia, replica\u00e7\u00e3o, instant\u00e2neos, criptografia, RBAC seguro e muito mais. Alguns dos benef\u00edcios s\u00e3o:<\/p>\n<div>\n<ol class=\"arabic\">\n<li><strong>Volumes granulares de cont\u00eaineres<\/strong> - A Portworx pode pegar v\u00e1rios volumes EBS por host, agregar a capacidade e derivar volumes virtuais (soft) granulares de cont\u00eaineres por cont\u00eainer.<\/li>\n<li><strong>HA de zona de disponibilidade cruzada<\/strong> - A Portworx proteger\u00e1 os dados, em n\u00edvel de bloco, em v\u00e1rias inst\u00e2ncias de computa\u00e7\u00e3o em zonas de disponibilidade. Como os controladores de replica\u00e7\u00e3o reiniciam os pods em n\u00f3s diferentes, os dados ainda estar\u00e3o altamente dispon\u00edveis nesses n\u00f3s.<\/li>\n<li><strong>Suporte para opera\u00e7\u00f5es de dados corporativos<\/strong> - A Portworx implementa snapshots granulares de cont\u00eaineres, classe de servi\u00e7o e classifica\u00e7\u00e3o por n\u00edveis sobre os volumes f\u00edsicos dispon\u00edveis.<\/li>\n<li><strong>Facilidade de implementa\u00e7\u00e3o e provisionamento<\/strong> - A pr\u00f3pria Portworx \u00e9 implantada como um cont\u00eainer e integrada \u00e0s ferramentas de orquestra\u00e7\u00e3o. O DevOps pode provisionar programaticamente o armazenamento granular do cont\u00eainer com qualquer propriedade, como tamanho, classe de servi\u00e7o, chave de criptografia etc.<\/li>\n<\/ol>\n<h2>Configurar a inst\u00e2ncia do AWS EC2<\/h2>\n<p>A Portworx \u00e9 executada somente no Linux ou no CoreOS. Configure uma inst\u00e2ncia do Ubuntu no AWS EC2:<\/p>\n<ol class=\"arabic\">\n<li>Inicie a inst\u00e2ncia do Ubuntu 14.04 com\u00a0<code>m3.medium<\/code> tipo de inst\u00e2ncia. Certifique-se de adicionar a porta 8091 \u00e0s regras de seguran\u00e7a de entrada. Isso permite que <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/admin\/ui-intro.html\">Console da Web do Couchbase<\/a> para ficar acess\u00edvel depois.<\/li>\n<li>Fa\u00e7a login na inst\u00e2ncia do EC2 usando o comando: <code>ssh -i ~\/.ssh\/arun-cb-west1.pem ubuntu@<\/code><\/li>\n<li>Atualize a inst\u00e2ncia do Ubuntu: <code>sudo apt-get update<\/code><\/li>\n<li>Instalar o Docker: <code>curl -sSL https:\/\/get.docker.com\/ | sh<\/code>. Instru\u00e7\u00f5es mais detalhadas est\u00e3o dispon\u00edveis em <a href=\"https:\/\/docs.docker.com\/engine\/installation\/linux\/ubuntu\/\">Obter o Docker para Ubuntu<\/a>.<\/li>\n<li>Habilite o acesso n\u00e3o raiz para o comando docker: <code>sudo usermod -aG docker ubuntu<\/code><\/li>\n<li>Fa\u00e7a logout da inst\u00e2ncia do EC2 e fa\u00e7a login novamente<\/li>\n<\/ol>\n<h2>Criar volume do AWS EBS<\/h2>\n<ol class=\"arabic\">\n<li>Crie um volume EBS de 10 GB usando o console do EC2, conforme explicado em <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ebs-creating-volume.html\">documentos<\/a>.<\/li>\n<li>Obtenha o ID da inst\u00e2ncia no console do EC2. Anexe esse volume \u00e0 inst\u00e2ncia do EC2 usando esse ID de inst\u00e2ncia e use o nome de dispositivo padr\u00e3o\u00a0<code>\/dev\/sdf.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2690\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/portworx-create-ec2-volume-300x138.png\" alt=\"Portworx EC2 Create Volume\" width=\"300\" height=\"138\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-create-ec2-volume-300x138.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-create-ec2-volume-768x354.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-create-ec2-volume-1024x472.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-create-ec2-volume.png 1146w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><br \/>\n<\/code><\/li>\n<li>Uso <code>lsblk<\/code>\u00a0na inst\u00e2ncia do EC2 para verificar se o volume est\u00e1 anexado \u00e0 inst\u00e2ncia:\n<div>\n<div>\n<pre><code>NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\r\nxvda    202:0    0   8G  0 disk\r\n\u2514\u2500xvda1 202:1    0   8G  0 part \/\r\nxvdb    202:16   0  30G  0 disk \/mnt\r\nxvdf    202:80   0  10G  0 disk<\/code><\/pre>\n<\/div>\n<\/div>\n<\/li>\n<\/ol>\n<h2>Cont\u00eaineres Portworx<\/h2>\n<ol>\n<li>A composi\u00e7\u00e3o do armazenamento f\u00edsico de cada n\u00f3, todos os volumes provisionados no cluster, bem como seus mapeamentos de cont\u00eaineres, s\u00e3o armazenados em um cluster etcd. Inicie um cluster etcd:\n<pre class=\"lang:default decode:true\">docker run -v \\\r\n  \/data\/varlib\/etcd \\\r\n  -p 4001:4001 \\\r\n  -d \\\r\n  portworx\/etcd:latest<\/pre>\n<\/li>\n<li>Por padr\u00e3o, os volumes montados na raiz n\u00e3o podem ser compartilhados. Ative essa op\u00e7\u00e3o usando o comando:\n<pre class=\"lang:default decode:true\">sudo mount --make-shared \/<\/pre>\n<p>Isso \u00e9 explicado com mais detalhes em <a href=\"https:\/\/docs.portworx.com\/os-config-shared-mounts.html#ubuntu-configuration-and-shared-mounts\">Configura\u00e7\u00e3o do Ubuntu e montagens compartilhadas<\/a>.<\/li>\n<li>O cont\u00eainer do PX-Developer (px-dev) em um servidor com o Docker Engine transforma esse servidor em um n\u00f3 de armazenamento de expans\u00e3o horizontal. O PX-Enterprise, por outro lado, oferece suporte a v\u00e1rios clusters e v\u00e1rias nuvens, em que o armazenamento sob gerenciamento pode estar no local ou em uma nuvem p\u00fablica como a AWS.<br \/>\nPara este blog, iniciaremos um cont\u00eainer px-dev:<\/p>\n<pre class=\"lang:default decode:true\">docker run --restart=always --name px -d --net=host \\\r\n  --privileged=true                             \\\r\n  -v \/run\/docker\/plugins:\/run\/docker\/plugins    \\\r\n  -v \/var\/lib\/osd:\/var\/lib\/osd:shared           \\\r\n  -v \/dev:\/dev                                  \\\r\n  -v \/etc\/pwx:\/etc\/pwx                          \\\r\n  -v \/opt\/pwx\/bin:\/export_bin:shared            \\\r\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock  \\\r\n  -v \/var\/cores:\/var\/cores                      \\\r\n  -v \/usr\/src:\/usr\/src                           \\\r\n  --ipc=host                                    \\\r\n  portworx\/px-dev -daemon -k etcd:\/\/localhost:4001 -c cluster1 -s \/dev\/xvdf<\/pre>\n<p>Detalhes completos sobre esse comando est\u00e3o dispon\u00edveis em <a href=\"https:\/\/docs.portworx.com\/run-with-docker.html\">Executar o PX com o Docker<\/a>.<\/li>\n<li>Procure por registros que usem <code>registros do cont\u00eainer docker -f px<\/code> e fique atento \u00e0s declara\u00e7\u00f5es a seguir:\n<pre class=\"lang:default decode:true\">time=\"2017-02-16T05:33:26Z\" level=info msg=\"Initialize the scheduler client and the scheduler watch\" \r\ntime=\"2017-02-16T05:33:26Z\" level=info msg=\"Started a kvdb watch on key : scheduler\/containers\" \r\ntime=\"2017-02-16T05:33:26Z\" level=info msg=\"Started a kvdb watch on key : scheduler\/volumes\" \r\ntime=\"2017-02-16T05:33:26Z\" level=info msg=\"Started a kvdb watch on key : scheduler\/nodes\/list\"<\/pre>\n<\/li>\n<li>Verifique o status dos volumes anexados que est\u00e3o dispon\u00edveis para a Portworx usando\u00a0<code>sudo \/opt\/pwx\/bin\/pxctl status<\/code> para ver a sa\u00edda:\n<pre class=\"lang:default decode:true\">Status: PX is operational\r\nNode ID: 679b79b1-f4c3-413e-a8e0-c527348647c9\r\n\tIP: 172.31.25.21 \r\n \tLocal Storage Pool: 1 pool\r\n\tPool\tIO_Priority\tSize\tUsed\tStatus\tZone\tRegion\r\n\t0\tLOW\t\t10 GiB\t266 MiB\tOnline\ta\tus-west-1\r\n\tLocal Storage Devices: 1 device\r\n\tDevice\tPath\t\tMedia Type\t\tSize\t\tLast-Scan\r\n\t0:1\t\/dev\/xvdf\tSTORAGE_MEDIUM_SSD\t10 GiB\t\t16 Feb 17 05:33 UTC\r\n\ttotal\t\t\t-\t\t\t10 GiB\r\nCluster Summary\r\n\tCluster ID: cluster1\r\n\tNode IP: 172.31.25.21 - Capacity: 266 MiB\/10 GiB Online (This node)\r\nGlobal Storage Pool\r\n\tTotal Used    \t:  266 MiB\r\n\tTotal Capacity\t:  10 GiB<\/pre>\n<p>Ele mostra a capacidade total dispon\u00edvel e utilizada.<\/li>\n<\/ol>\n<h2>Volume do Docker<\/h2>\n<ol>\n<li>Vamos criar um volume do Docker:\n<pre class=\"lang:default decode:true\">docker volume create -d pxd -o size=10G -o fs=ext4 --name cbvol<\/pre>\n<p>Mais detalhes sobre esse comando est\u00e3o em <a href=\"https:\/\/docs.portworx.com\/create-manage-storage-volumes.html\">Criar volumes com o Docker<\/a>.<\/li>\n<li>Verifique a lista de volumes dispon\u00edveis usando <code>docker volume ls<\/code> comando:\n<pre class=\"lang:default decode:true\">DRIVER              VOLUME NAME\r\nlocal               70f7b9a356df4c1f0c08e13a4e813f1ef3e174a91001f277a63b62d683a27159\r\npxd                 cbvol\r\nlocal               f7bc5fa455a88638c106881f1bce98244b670e094d5fdc47917b53a88e46c073<\/pre>\n<p>Como mostrado, <code>cbvol<\/code> \u00e9 criado com <code>pxd<\/code> motorista.<\/li>\n<\/ol>\n<h2>Couchbase com Portworx Volume<\/h2>\n<ol>\n<li>Crie um cont\u00eainer do Couchbase usando o volume do Portworx:\n<pre class=\"lang:default decode:true\">docker container run \\\r\n  -d \\\r\n  --name db \\\r\n  -v cbvol:\/opt\/couchbase\/var \\\r\n  -p 8091-8094:8091-8094 \\\r\n  -p 11210:11210 \\\r\n  arungupta\/couchbase<\/pre>\n<p>Observe como <code>\/opt\/couchbase\/var<\/code> onde todos os dados do Couchbase s\u00e3o armazenados no cont\u00eainer \u00e9 mapeado para o <code>cbvol<\/code> no host. Esse volume \u00e9 mapeado pela Portworx.<\/li>\n<li>Fa\u00e7a login no Console da Web do Couchbase em https:\/\/:8091, use o login <code>Administrador<\/code> e <code>senha<\/code> como senha.<\/li>\n<li>V\u00e1 para Data Buckets e crie um novo data bucket pwx:<br \/>\n<img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"84\" class=\"alignnone size-medium wp-image-2692\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/portworx-pwx-bucket-1-300x84.png\" alt=\"Couchbase Bucket with Portworx\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-pwx-bucket-1-300x84.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-pwx-bucket-1-1024x287.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-pwx-bucket-1-768x215.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-pwx-bucket-1-1536x431.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-pwx-bucket-1-2048x575.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-pwx-bucket-1-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/portworx-pwx-bucket-1-1320x370.png 1320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/li>\n<li>Na inst\u00e2ncia do EC2, veja a lista de cont\u00eaineres:\n<pre class=\"lang:default decode:true\">ubuntu@ip-172-31-25-21:~$ docker container ls\r\nCONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                                                                               NAMES\r\n8ae763d9d53b        arungupta\/couchbase    \"\/entrypoint.sh \/o...\"   5 minutes ago       Up 5 minutes        0.0.0.0:8091-8094-&gt;8091-8094\/tcp, 11207\/tcp, 11211\/tcp, 0.0.0.0:11210-&gt;11210\/tcp, 18091-18093\/tcp   db\r\n5423bcd9b426        portworx\/px-dev        \"\/docker-entry-poi...\"   14 minutes ago      Up 14 minutes                                                                                                           px\r\ncf3c779a4459        portworx\/etcd:latest   \"\/entrypoint.sh \/b...\"   21 minutes ago      Up 21 minutes       2379-2380\/tcp, 7001\/tcp, 0.0.0.0:4001-&gt;4001\/tcp                                                     youthful_jepsen<\/pre>\n<p><code>etcd<\/code>, <code>px-dev<\/code> e <code>db<\/code> est\u00e3o em execu\u00e7\u00e3o.<\/li>\n<li>Matar o <code>db<\/code> cont\u00eainer:\n<pre class=\"lang:default decode:true\">docker container rm -f db<\/pre>\n<\/li>\n<li>Reinicie o cont\u00eainer do banco de dados como:\n<pre class=\"lang:default decode:true\">docker container run \\\r\n  -d \\\r\n  --name db \\\r\n  -v cbvol:\/opt\/couchbase\/var \\\r\n  -p 8091-8094:8091-8094 \\\r\n  -p 11210:11210 \\\r\n  arungupta\/couchbase<\/pre>\n<p>Agora, porque <code>cbvol<\/code> \u00e9 mapeado para <code>\/opt\/couchbase\/var<\/code> novamente, os dados s\u00e3o preservados durante as reinicializa\u00e7\u00f5es. Isso pode ser verificado acessando o Console da Web do Couchbase e verificando a vari\u00e1vel <code>pwx<\/code> criado anteriormente.<\/li>\n<\/ol>\n<p>Outra perspectiva interessante tamb\u00e9m est\u00e1 em\u00a0<a href=\"https:\/\/myopsblog.wordpress.com\/2017\/02\/06\/why-databases-is-not-for-containers\/\">Por que os bancos de dados n\u00e3o s\u00e3o para cont\u00eaineres?<\/a>. S\u00f3 porque existe o Docker, isso n\u00e3o significa que todas as suas necessidades de banco de dados devam ser Dockerizadas. Mas, se voc\u00ea precisar, h\u00e1 muitas op\u00e7\u00f5es e elas podem ser usadas em aplicativos de n\u00edvel de produ\u00e7\u00e3o.<\/p>\n<p>Deseja saber mais sobre como executar o Couchbase em cont\u00eaineres?<\/p>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/containers\/\">Couchbase em cont\u00eaineres<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/\">Portal do desenvolvedor do Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/twitter.com\/couchbasedev\">@couchhasedev<\/a> e <a href=\"https:\/\/twitter.com\/couchbase\">@couchbase<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u00a0 Containers are meant to be ephemeral and so scale pretty\u00a0well for stateless applications. Stateful containers, such as Couchbase, need to be treated differently. Managing Persistence for Docker Containers\u00a0provide a great overview of how to manage persistence for stateful containers. [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":2691,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815],"tags":[1520,1519],"ppma_author":[8933],"class_list":["post-2689","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","tag-containers","tag-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Stateful Containers using Portworx and Couchbase<\/title>\n<meta name=\"description\" content=\"This blog shows how to create stateful containers using Docker Volume Mapping, Portworx and Couchbase on Amazon Web Services..\" \/>\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\/stateful-docker-containers-portworx-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stateful Containers using Portworx and Couchbase\" \/>\n<meta property=\"og:description\" content=\"This blog shows how to create stateful containers using Docker Volume Mapping, Portworx and Couchbase on Amazon Web Services..\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/stateful-docker-containers-portworx-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-16T05:55:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-11T08:42:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/px-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"753\" \/>\n\t<meta property=\"og:image:height\" content=\"276\" \/>\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=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Stateful Containers using Portworx and Couchbase\",\"datePublished\":\"2017-02-16T05:55:34+00:00\",\"dateModified\":\"2023-09-11T08:42:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/\"},\"wordCount\":711,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/02\\\/px-logo.png\",\"keywords\":[\"containers\",\"docker\"],\"articleSection\":[\"Best Practices and Tutorials\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/\",\"name\":\"Stateful Containers using Portworx and Couchbase\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/02\\\/px-logo.png\",\"datePublished\":\"2017-02-16T05:55:34+00:00\",\"dateModified\":\"2023-09-11T08:42:18+00:00\",\"description\":\"This blog shows how to create stateful containers using Docker Volume Mapping, Portworx and Couchbase on Amazon Web Services..\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/02\\\/px-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/02\\\/px-logo.png\",\"width\":753,\"height\":276,\"caption\":\"Portworx Logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stateful Containers using Portworx and Couchbase\"}]},{\"@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:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g8900a75409c646948fe0bd80f6240337\",\"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":"Cont\u00eaineres com estado usando Portworx e Couchbase","description":"Este blog mostra como criar cont\u00eaineres com estado usando o Docker Volume Mapping, Portworx e Couchbase no Amazon Web Services.","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\/stateful-docker-containers-portworx-couchbase\/","og_locale":"pt_BR","og_type":"article","og_title":"Stateful Containers using Portworx and Couchbase","og_description":"This blog shows how to create stateful containers using Docker Volume Mapping, Portworx and Couchbase on Amazon Web Services..","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/stateful-docker-containers-portworx-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-02-16T05:55:34+00:00","article_modified_time":"2023-09-11T08:42:18+00:00","og_image":[{"width":753,"height":276,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/02\/px-logo.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":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Stateful Containers using Portworx and Couchbase","datePublished":"2017-02-16T05:55:34+00:00","dateModified":"2023-09-11T08:42:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/"},"wordCount":711,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/px-logo.png","keywords":["containers","docker"],"articleSection":["Best Practices and Tutorials"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/","name":"Cont\u00eaineres com estado usando Portworx e Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/px-logo.png","datePublished":"2017-02-16T05:55:34+00:00","dateModified":"2023-09-11T08:42:18+00:00","description":"Este blog mostra como criar cont\u00eaineres com estado usando o Docker Volume Mapping, Portworx e Couchbase no Amazon Web Services.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/px-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/px-logo.png","width":753,"height":276,"caption":"Portworx Logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Stateful Containers using Portworx and Couchbase"}]},{"@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:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g8900a75409c646948fe0bd80f6240337","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\/"}]}},"acf":[],"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","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2689","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=2689"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/2691"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2689"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}