{"id":994,"date":"2017-02-15T21:55:34","date_gmt":"2017-02-16T05:55:34","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/"},"modified":"2017-02-15T21:55:34","modified_gmt":"2017-02-16T05:55:34","slug":"stateful-docker-containers-portworx-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/stateful-docker-containers-portworx-couchbase\/","title":{"rendered":"Stateful Containers using Portworx and Couchbase"},"content":{"rendered":"\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2691\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/px-logo-300x110-1.png\" alt=\"Portworx Logo\" width=\"300\" height=\"110\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1109\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/logo-300x69-1.png\" alt=\"Couchbase Logo\" width=\"300\" height=\"69\"><\/p>\n\n\n\n<p>Containers are meant to be ephemeral and so scale pretty\u00a0well for stateless applications. Stateful containers, such as Couchbase, need to be treated differently. <a href=\"https:\/\/thenewstack.io\/methods-dealing-container-storage\/\">Managing Persistence for Docker Containers<\/a>\u00a0provide a great overview of how to manage persistence for stateful containers.<\/p>\n\n\n\n<p>This blog will\u00a0explain how to use <a href=\"https:\/\/docs.docker.com\/engine\/extend\/plugins_volume\/\">Docker Volume Plugins<\/a> and <a href=\"https:\/\/portworx.com\/\">Portworx<\/a> to create a\u00a0stateful container.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Portworx?<\/h2>\n\n\n\n<p><a href=\"https:\/\/portworx.com\/\">Portworx<\/a> is an easy-to-deploy container data services that provide persistence, replication, snapshots, encryption, secure RBAC and much more. Some of the benefits\u00a0are:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Container granular volumes<\/strong> &#8211; Portworx can take multiple EBS volumes per host and aggregate the capacity and derive container granular virtual (soft) volumes per container.<\/li>\n\n\n<li><strong>Cross Availability Zone HA<\/strong> &#8211; Portworx will protect the data, at block level, across multiple compute instances across availability zones. As replication controllers restart pods on different nodes, the data will still be highly available on those nodes.<\/li>\n\n\n<li><strong>Support for enterprise data operations<\/strong> &#8211; Portworx implements container granular snapshots, class of service, tiering on top of the available physical volumes.<\/li>\n\n\n<li><strong>Ease of deployment and provisioning<\/strong> &#8211; Portworx itself is deployed as a container and integrated with the orchestration tools. DevOps can programmatically provision container granular storage with any property such as size, class of service, encryption key etc.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Setup AWS EC2 Instance<\/h2>\n\n\n\n<p>Portworx runs only on Linux or CoreOS. Setup an Ubuntu instance on AWS EC2:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Start Ubuntu 14.04 instance\u00a0with\u00a0<code>m3.medium<\/code> instance type. Make sure to\u00a0add port 8091 to inbound security rules. This allows <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/admin\/ui-intro.html\">Couchbase Web Console<\/a> to be accessible afterwards.<\/li>\n\n\n<li>Login to the EC2 instance using the command: <code>ssh -i ~\/.ssh\/arun-cb-west1.pem ubuntu@&lt;public-ip&gt;<\/code><\/li>\n\n\n<li>Update the Ubuntu instance: <code>sudo apt-get update<\/code><\/li>\n\n\n<li>Install Docker: <code>curl -sSL https:\/\/get.docker.com\/ | sh<\/code>. More detailed instructions are available at <a href=\"https:\/\/docs.docker.com\/engine\/installation\/linux\/ubuntu\/\">Get Docker for Ubuntu<\/a>.<\/li>\n\n\n<li>Enable non-root access for the docker command: <code>sudo usermod -aG docker ubuntu<\/code><\/li>\n\n\n<li>Logout from the EC2 instance and log back in<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Create AWS EBS Volume<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create an EBS volume for 10GB using EC2 console as explained in <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/ebs-creating-volume.html\">docs<\/a>.<\/li>\n\n\n<li>Get the instance id from the EC2 console. Attach this volume to EC2 instance using this instance id, use the default device name\u00a0<code>\/dev\/sdf.<br>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2690\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/portworx-create-ec2-volume-300x138-1.png\" alt=\"Portworx EC2 Create Volume\" width=\"300\" height=\"138\"><br>\n<\/code><\/li>\n\n\n<li>Use <code>lsblk<\/code>\u00a0command in EC2 instance to verify that the volume is attached to the instance:\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\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Portworx Container<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Physical storage makeup of each node, all the provisioned volumes in the cluster as well as their container mappings is stored in an etcd cluster. Start an etcd cluster:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]docker run -v<br \/>\n  \/data\/varlib\/etcd<br \/>\n  -p 4001:4001<br \/>\n  -d<br \/>\n  portworx\/etcd:latest[\/crayon]<\/p>\n<\/p>\n<\/li>\n\n\n<li>By default root mounted volumes are not allowed to be shared. Enable this using the command:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]sudo mount &#8211;make-shared \/[\/crayon]<\/p>\n<\/p>\n<p>This is explained more at <a href=\"https:\/\/docs.portworx.com\/os-config-shared-mounts.html#ubuntu-configuration-and-shared-mounts\">Ubuntu Configuration and Shared Mounts<\/a>.<\/p><\/li>\n\n\n<li>PX-Developer (px-dev)\u00a0container on a server with Docker Engine turns that server into a scale-out storage node. PX-Enterprise, on the other hand, provides multi-cluster and multi-cloud support, where storage under management can be on-premise or in a public cloud like AWS.<br>\nFor this blog, we&#8217;ll start a px-dev container:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]docker run &#8211;restart=always &#8211;name px -d &#8211;net=host<br \/>\n  &#8211;privileged=true<br \/>\n  -v \/run\/docker\/plugins:\/run\/docker\/plugins<br \/>\n  -v \/var\/lib\/osd:\/var\/lib\/osd:shared<br \/>\n  -v \/dev:\/dev<br \/>\n  -v \/etc\/pwx:\/etc\/pwx<br \/>\n  -v \/opt\/pwx\/bin:\/export_bin:shared<br \/>\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock<br \/>\n  -v \/var\/cores:\/var\/cores<br \/>\n  -v \/usr\/src:\/usr\/src<br \/>\n  &#8211;ipc=host<br \/>\n  portworx\/px-dev -daemon -k etcd:\/\/localhost:4001 -c cluster1 -s \/dev\/xvdf[\/crayon]<\/p>\n<\/p>\n<p>Complete details about this command are available at <a href=\"https:\/\/docs.portworx.com\/run-with-docker.html\">Run PX with Docker<\/a>.<\/p><\/li>\n\n\n<li>Look for logs using <code>docker container logs -f px<\/code> and watch out for the following statements:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]time=&#8221;2017-02-16T05:33:26Z&#8221; level=info msg=&#8221;Initialize the scheduler client and the scheduler watch&#8221;<br \/>\ntime=&#8221;2017-02-16T05:33:26Z&#8221; level=info msg=&#8221;Started a kvdb watch on key : scheduler\/containers&#8221;<br \/>\ntime=&#8221;2017-02-16T05:33:26Z&#8221; level=info msg=&#8221;Started a kvdb watch on key : scheduler\/volumes&#8221;<br \/>\ntime=&#8221;2017-02-16T05:33:26Z&#8221; level=info msg=&#8221;Started a kvdb watch on key : scheduler\/nodes\/list&#8221;[\/crayon]<\/p>\n<\/p>\n<\/li>\n\n\n<li>Check the status of attached volumes that are available to Portworx using\u00a0<code>sudo \/opt\/pwx\/bin\/pxctl status<\/code> to see the output:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]Status: PX is operational<br \/>\nNode ID: 679b79b1-f4c3-413e-a8e0-c527348647c9<br \/>\n\tIP: 172.31.25.21<br \/>\n \tLocal Storage Pool: 1 pool<br \/>\n\tPool\tIO_Priority\tSize\tUsed\tStatus\tZone\tRegion<br \/>\n\t0\tLOW\t\t10 GiB\t266 MiB\tOnline\ta\tus-west-1<br \/>\n\tLocal Storage Devices: 1 device<br \/>\n\tDevice\tPath\t\tMedia Type\t\tSize\t\tLast-Scan<br \/>\n\t0:1\t\/dev\/xvdf\tSTORAGE_MEDIUM_SSD\t10 GiB\t\t16 Feb 17 05:33 UTC<br \/>\n\ttotal\t\t\t&#8211;\t\t\t10 GiB<br \/>\nCluster Summary<br \/>\n\tCluster ID: cluster1<br \/>\n\tNode IP: 172.31.25.21 &#8211; Capacity: 266 MiB\/10 GiB Online (This node)<br \/>\nGlobal Storage Pool<br \/>\n\tTotal Used    \t:  266 MiB<br \/>\n\tTotal Capacity\t:  10 GiB[\/crayon]<\/p>\n<\/p>\n<p>It shows the total capacity available and used.<\/p><\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Docker Volume<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Let&#8217;s create a Docker volume:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]docker volume create -d pxd -o size=10G -o fs=ext4 &#8211;name cbvol[\/crayon]<\/p>\n<\/p>\n<p>More details about this command are at <a href=\"https:\/\/docs.portworx.com\/create-manage-storage-volumes.html\">Create\u00a0Volumes with Docker<\/a>.<\/p><\/li>\n\n\n<li>Check the list of volumes available\u00a0using <code>docker volume ls<\/code> command:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]DRIVER              VOLUME NAME<br \/>\nlocal               70f7b9a356df4c1f0c08e13a4e813f1ef3e174a91001f277a63b62d683a27159<br \/>\npxd                 cbvol<br \/>\nlocal               f7bc5fa455a88638c106881f1bce98244b670e094d5fdc47917b53a88e46c073[\/crayon]<\/p>\n<\/p>\n<p>As shown, <code>cbvol<\/code> is created with <code>pxd<\/code> driver.<\/p><\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Couchbase with Portworx Volume<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create a Couchbase container using the Portworx volume:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]docker container run<br \/>\n  -d<br \/>\n  &#8211;name db<br \/>\n  -v cbvol:\/opt\/couchbase\/var<br \/>\n  -p 8091-8094:8091-8094<br \/>\n  -p 11210:11210<br \/>\n  arungupta\/couchbase[\/crayon]<\/p>\n<\/p>\n<p>Notice how <code>\/opt\/couchbase\/var<\/code> where all Couchbase data is stored in the container is mapped to the <code>cbvol<\/code> volume on the host. This volume is mapped by Portworx.<\/p><\/li>\n\n\n<li>Login to Couchbase Web Console at https:\/\/&lt;public-ip&gt;:8091, use the login <code>Administrator<\/code> and <code>password<\/code> as password.<\/li>\n\n\n<li>Go to Data Buckets and create a new data bucket pwx:<br>\n<img decoding=\"async\" class=\"alignnone size-medium wp-image-2692\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/portworx-pwx-bucket-1-300x84-1.png\" alt=\"Couchbase Bucket with Portworx\"><\/li>\n\n\n<li>In EC2 instance, see the list of containers:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]ubuntu@ip-172-31-25-21:~$ docker container ls<br \/>\nCONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                                                                               NAMES<br \/>\n8ae763d9d53b        arungupta\/couchbase    &#8220;\/entrypoint.sh \/o&#8230;&#8221;   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<br \/>\n5423bcd9b426        portworx\/px-dev        &#8220;\/docker-entry-poi&#8230;&#8221;   14 minutes ago      Up 14 minutes                                                                                                           px<br \/>\ncf3c779a4459        portworx\/etcd:latest   &#8220;\/entrypoint.sh \/b&#8230;&#8221;   21 minutes ago      Up 21 minutes       2379-2380\/tcp, 7001\/tcp, 0.0.0.0:4001-&gt;4001\/tcp                                                     youthful_jepsen[\/crayon]<\/p>\n<\/p>\n<p><code>etcd<\/code>, <code>px-dev<\/code> and <code>db<\/code> containers are running.<\/p><\/li>\n\n\n<li>Kill the <code>db<\/code> container:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]docker container rm -f db[\/crayon]<\/p>\n<\/p>\n<\/li>\n\n\n<li>Restart the database container as:\n<p><p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]sudo mount &#8211;make-shared \/[\/crayon]<\/p>\n0<\/p>\n<p>Now, because <code>cbvol<\/code> is mapped to <code>\/opt\/couchbase\/var<\/code> again, the data is preserved across restarts. This can be verified by accessing the Couchbase Web Consoleand checking on the <code>pwx<\/code> bucket created earlier.<\/p><\/li>\n\n<\/ol>\n\n\n\n<p>Another interesting perspective\u00a0is also at\u00a0<a href=\"https:\/\/myopsblog.wordpress.com\/2017\/02\/06\/why-databases-is-not-for-containers\/\">why database are not for containers?<\/a>. Just because there is Docker, does not mean all your database needs should be Dockerized. But if you need to, then there are plenty of options and can be used in production-grade applications.<\/p>\n\n\n\n<p>Want to learn more about running Couchbase in containers?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/couchbase.com\/containers\/\">Couchbase on Containers<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.couchbase.com\/developers\/\">Couchbase Developer Portal<\/a><\/li>\n\n\n<li><a href=\"https:\/\/twitter.com\/couchbasedev\">@couchhasedev<\/a> and <a href=\"https:\/\/twitter.com\/couchbase\">@couchbase<\/a><\/li>\n\n<\/ul>\n","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. This blog will\u00a0explain how to use Docker Volume Plugins and Portworx to create a\u00a0stateful container. [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":993,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[136],"tags":[225,149],"ppma_author":[126],"class_list":["post-994","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.6 (Yoast SEO v27.6) - 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\/ko\/stateful-docker-containers-portworx-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\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\/ko\/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=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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\ubd84\" \/>\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\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/\"},\"wordCount\":1159,\"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\\\/5\\\/2026\\\/05\\\/px-logo.png\",\"keywords\":[\"containers\",\"docker\"],\"articleSection\":[\"Best Practices and Tutorials\"],\"inLanguage\":\"ko-KR\",\"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\\\/5\\\/2026\\\/05\\\/px-logo.png\",\"datePublished\":\"2017-02-16T05:55:34+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\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/stateful-docker-containers-portworx-couchbase\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/px-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/px-logo.png\",\"width\":753,\"height\":276},{\"@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\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"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\":\"ko-KR\",\"@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\\\/ko\\\/author\\\/arun-gupta\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Stateful Containers using Portworx and Couchbase","description":"This blog shows how to create stateful containers using Docker Volume Mapping, Portworx and Couchbase on 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\/ko\/stateful-docker-containers-portworx-couchbase\/","og_locale":"ko_KR","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\/ko\/stateful-docker-containers-portworx-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-02-16T05:55:34+00:00","og_image":[{"width":753,"height":276,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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\ubd84"},"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","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/"},"wordCount":1159,"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\/5\/2026\/05\/px-logo.png","keywords":["containers","docker"],"articleSection":["Best Practices and Tutorials"],"inLanguage":"ko-KR","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\/5\/2026\/05\/px-logo.png","datePublished":"2017-02-16T05:55:34+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":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/stateful-docker-containers-portworx-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/px-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/px-logo.png","width":753,"height":276},{"@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":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","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":"ko-KR","@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\/ko\/author\/arun-gupta\/"}]}},"acf":[],"authors":[{"term_id":126,"user_id":58,"is_guest":0,"slug":"arun-gupta","display_name":"Arun Gupta, VP, Developer Advocacy, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/994","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=994"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/994\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/993"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=994"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=994"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=994"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}