{"id":6633,"date":"2021-02-05T04:21:39","date_gmt":"2021-02-05T12:21:39","guid":{"rendered":"http:\/\/www.couchbase.com\/blog\/?p=6633"},"modified":"2026-05-05T10:08:19","modified_gmt":"2026-05-05T17:08:19","slug":"using-docker-with-couchbase-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/using-docker-with-couchbase-mobile\/","title":{"rendered":"Docker\ub97c \uc0ac\uc6a9\ud558\uc5ec \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\ub85c \uac1c\ubc1c\ud558\uae30"},"content":{"rendered":"<p>Container technologies such as <a href=\"https:\/\/www.docker.com\/what-container\">Docker<\/a> have vastly simplified the software development, test and deployment process by allowing you to package applications along with their complete runtime environment that abstract away differences in infrastructure and OSes. This post is a <strong>primer<\/strong> on how you can use Docker to set up your <a href=\"https:\/\/www.couchbase.com\/blog\/announcing-general-availability-couchbase-mobile-2-1\/\">Couchbase Mobile <\/a>development environment and offers some troubleshooting tips.<\/p>\n<p>Everything discussed in this post applies to a simple\u00a0<em>development<\/em> environment with the goal of expediting the development process so you can quickly and easily start building mobile apps using Couchbase Mobile.<\/p>\n<p>In a related <a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-sync-gateway-on-kubernetes\/\">post<\/a>, we discuss how you can leverage <strong>Kubernetes<\/strong> to scale out and manage the deployment of Couchbase Mobile cluster in production environments. The <a href=\"https:\/\/docs.couchbase.com\/operator\/1.1\/overview.html\">Couchbase Autonomous Operator<\/a> greatly simplifies the task of deploying and managing your cluster.<\/p>\n<h2 id=\"background\">Background<\/h2>\n<p>At a high level, the full <a href=\"https:\/\/developer.couchbase.com\/mobile\">Couchbase Mobile<\/a> stack comprises of the following components<br \/>\n&#8211; The Couchbase Lite, which is the NoSQL embedded database integrated into your mobile apps<br \/>\n&#8211; The Sync Gateway, which is the gateway responsible for data synchronization across the clients and Couchbase Server<br \/>\n&#8211; The Couchbase Server, responsible for data persistence<\/p>\n<p>To get started with development using Couchbase Mobile, you need an instance of Couchbase Server and Sync Gateway. You will integrate Couchbase Lite framework into your apps.<\/p>\n<p>In this post, we will learn how to use Docker to deploy an instance of a <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.1\/introduction.html\">Sync Gateway<\/a> node and a single node <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/introduction\/intro.html\">Couchbase Server<\/a> cluster on a <em>desktop<\/em> environment suited for development purposes.<\/p>\n<h2 id=\"installingdocker\">Installing Docker<\/h2>\n<p>If you haven\u2019t done so already, please install Docker per the <a href=\"https:\/\/docs.docker.com\/engine\/installation\/\">install guide<\/a> for your desktop environment.<\/p>\n<p>You can verify your docker install by typing the following command in a terminal window.<\/p>\n<pre class=\"lang:default decode:true\">docker --version<\/pre>\n<p>You should see a response similar to below<\/p>\n<pre class=\"lang:default decode:true\">Docker version 18.03.0-ce, build 0520e24<\/pre>\n<h2 id=\"installingcouchbaseserver\">Installing Couchbase Server<\/h2>\n<p>Couchbase Server is available on <a href=\"https:\/\/hub.docker.com\/r\/couchbase\/server\/\">Docker Hub<\/a> in the <code>couchbase<\/code> repo. At time of writing this post, this version is 6.0.1.<\/p>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>You will first get the docker image from Docker Hub. Open a terminal window and run the following command<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">docker pull couchbase\/server<\/pre>\n<ul style=\"padding-bottom: 0px;\">\n<li>Create a local docker network named \u201ccbnetwork\u201d (or any name) if one does not exist already. Open a terminal window and run the following command. If you use a network name other than &#8220;cbnetwork&#8221; then remember to update the corresponding use of the name in the remaining instructions.<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">docker network ls \r\ndocker network create -d bridge cbnetwork<\/pre>\n<h2 id=\"configuringcouchbaseserver\">Configuring Couchbase Server<\/h2>\n<p>Once your Couchbase Server is installed and running, you will have to configure it before you can start using it with your Sync Gateway<\/p>\n<p>Here are the minimal set of the things you will have to do :-<\/p>\n<ul>\n<li>Create a cluster with appropriate services. A single node cluster is sufficient for development needs<\/li>\n<li>Configure Adminstrator Account for server access<\/li>\n<li>Configure cluster<\/li>\n<li>Create a default bucket<\/li>\n<li>Create a RBAC user with appropriate bucket level access. The RBAC user credentials is used by the Sync Gateway to authenticate with the Couchbase Server<\/li>\n<\/ul>\n<p>You have two options on how to configure the Couchbase Server &#8211; <em>Manual<\/em> and <em>Automated<\/em>. Jump to the appropriate section depending on your choice.<\/p>\n<h3 id=\"option1:configurationusingtheadminui\">Option 1: Configuration using the Admin UI<\/h3>\n<p>You can configure the Couchbase Server manually via the Couchbase Admin Console UI<br \/>\nIn order access the Admin UI, we must run the docker image that we pulled earlier.<\/p>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Run Couchbase Server with the following command. This runs the Couchbase Server as a daemon process.<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\"><code class=\"width-set:true lang:sh wrap:true\">docker run -d --name cb-server --network cbnetwork -p 8091-8094:8091-8094 -p 11210:11210 couchbase\/server<\/code><\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>You can view the logs at any time by running the following command<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">docker logs -f cb-server<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>If your server has succesfully launched, you should see something like this in your output<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">Starting Couchbase Server -- Web UI available at https:\/\/&lt;ip&gt;:8091 and logs available in \/opt\/couchbase\/var\/lib\/couchbase\/logs<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>It may take a few seconds for the server to startup. Verify that the docker image is running with following command<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true \">docker ps<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Once the server is up and running, access it by opening the URL <strong><code>https:\/\/localhost:8091<\/code><\/strong> in your browser<\/li>\n<li>Follow the instructions in the <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/install\/init-setup.html#initialize-cluster-web-console\">setup guide<\/a> to configure the Administrator account and to create a single node cluster.<\/li>\n<li>Follow the intructions <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/manage\/manage-buckets\/create-bucket.html#create-bucket-using-couchbase-web-console\">here<\/a> to create a bucket<\/li>\n<li>Next, create a RBAC user \u00a0for the Sync Gateway to connect. This user will be created with &#8220;with &#8220;Application Access&#8221; role as specified in instructions <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.1\/getting-started.html#creating-an-rbac-user\">here<\/a><\/li>\n<li>Once your Couchbase Server is setup, be sure to make note of\n<ul>\n<li>The name of the bucket that you created<\/li>\n<li>The RBAC user credentials that you used for setup<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><em>The RBAC credentials and name of bucket will be required when you are ready to configure your Sync Gateway<\/em><\/p>\n<p>The manual process is fine but can get tedious if you have to repeat this process a number of times on each of your development setups. Wouldn\u2019t it be great if the configuration steps could be automated. If you are interested in learning about that, proceed to the next section, else just skip ahead to the section on setting up the Sync Gateway.<\/p>\n<h3 id=\"option2:configurationusingthecli\">Option 2: Configuration using the CLI<\/h3>\n<p>I have generated a custom docker image from the Couchbase Server 6.0.1 image that will allow you to launch the container with appropriate configuration values via the command line. This will be particularly useful if you want to automate\/ script the installation\/automation process.<\/p>\n<p>While 6.0.1 is the latest version at the time of writing the post, it is probably not the latest release when you are reading it. So follow steps under &#8220;Building Custom Configurable Docker Image&#8221; to build custom image with a different server version.<\/p>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Download this custom development version of the Couchbase Server image based on Couchbase Server 6.0.1.<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">docker pull priyacouch\/couchbase-dev-6.0<code class=\"width-set:true lang:sh wrap:true\"><\/code><code class=\"width-set:true lang:sh wrap:true\"><\/code><\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Once you have succesfully downloaded the custom image, you can launch it by providing it with the appropriate configuration values as part of the launch command. Make sure you record the RBAC user credentials and name of bucket. These will be relevant during Sync Gateway configuration\n<ul>\n<li>COUCHBASE_ADMINISTRATOR_USERNAME is the name of Couchbase Administrator<\/li>\n<li>COUCHBASE_ADMINISTRATOR_PASSWORD is Couchbase Administrator password<\/li>\n<li>COUCHBASE_BUCKET is the name of the database bucket that you would like to create<\/li>\n<li>COUCHBASE_RBAC_USERNAME is the name of the Sycn Gateway RBAC user with Application Level bucket access<\/li>\n<li>COUCHBASE_RBAC_PASSWORD is the password of the RBAC user<\/li>\n<li>COUCHBASE_RBAC_NAME is a user friendly name for the RBAC user<\/li>\n<li>CLUSTER_NAME the name of the Couchbase Server cluster<\/li>\n<\/ul>\n<p>Open a terminal window and type the following command. You can provide suitable values for each of the configurable parameters.<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">docker run -d --name cb-server --network cbnetwork -p 8091-8094:8091-8094 -p 11210:11210 -e COUCHBASE_ADMINISTRATOR_USERNAME=Administrator -e COUCHBASE_ADMINISTRATOR_PASSWORD=password -e COUCHBASE_BUCKET=demobucket -e COUCHBASE_RBAC_USERNAME=admin -e COUCHBASE_RBAC_PASSWORD=password -e COUCHBASE_RBAC_NAME=\"admin\" -e CLUSTER_NAME=demo-cluster priyacouch\/couchbase-dev-6.0<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>You can view the logs at any time by running the following command<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">docker logs -f cb-server<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>You have to be patient. It takes a few minutes for the server to get up and running. If succesful, your output should look something like this<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">&lt; 100 50 0 0 100 50 0 1172 --:--:-- --:--:-- --:--:-- 1219 * Connection #0 to host 127.0.0.1 left intact SUCCESS: Bucket created SUCCESS: RBAC user set \/entrypoint.sh couchbase-server<\/pre>\n<ul>\n<li>That\u2019s it! Now you can test out your installation.<br \/>\nAccess it by opening the URL <strong><code>https:\/\/localhost:8091<\/code><\/strong> in your browser and verify that your configuration is as specified<\/li>\n<\/ul>\n<figure><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/04\/docker_cbs_6.gif\" alt=\"\" \/><\/figure>\n<p>&nbsp;<\/p>\n<h3 id=\"buildingcustomconfigurabledockerimage\">Building Custom Configurable Docker Image<\/h3>\n<p>If you are wondering how I generated the custom image with configurable options, there are couple of ways to do that. But I took an approach inspired by the <a href=\"https:\/\/www.couchbase.com\/blog\/deploying-containerized-couchbase-nosql-database-cluster-docker-video-tutorial\/\">tutorial<\/a>. I essentially built a custom docker image from the base Coucbase server image and configured it for our development needs!<\/p>\n<p>There are a tonne of custom configurable values as described in the <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/cli\/cbcli\/couchbase-cli.html\">couchbase CLI<\/a> and <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/rest-api\/rest-intro.html\">REST interface<\/a> specs. In my custom docker image, I allowed configuration of a few critical parameters ones and left the others to defaults.<\/p>\n<p>If you would like to generate your own image based on a different version of Couchbase Server and\/or if you would like to customize the configurable parameters, you can do so by following the steps specified in this <a href=\"https:\/\/gist.github.com\/rajagp\/8d05314d85fcbf169ee39a671077a566\"><strong>guide<\/strong><\/a><\/p>\n<h2 id=\"installingcouchbasesyncgateway2.x\">Installing Sync Gateway<\/h2>\n<p>Now that you have the Couchbase Server configured and up and running, we will install the Sync Gateway. It is important that the Couchbase Server is up and running before you get started with the Sync Gateway.<\/p>\n<p>The Sync Gateway is available on <a href=\"https:\/\/hub.docker.com\/r\/couchbase\/server\/\">Docker Hub<\/a> in the <code>couchbase<\/code> repo.<\/p>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>You will first get the docker image from Docker Hub. Open a new terminal window and run the following.<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">docker pull couchbase\/sync-gateway<\/pre>\n<ul>\n<li>The Sync Gateway must be launched with a <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.7\/gs-sgw-config.html\" target=\"_blank\" rel=\"noopener\">configuration file<\/a> where you specify among other things, the URL of the Couchbase Server to connect to, the bucket to access and the RBAC credentials to use for bucket access. The config file determines that runtime behavior of the sync gateway.<\/li>\n<\/ul>\n<p>The docker image that you pulled is built with a default configuration file. If you specify none, that\u2019s what will be used (and that\u2019s probably not going to work for you).<\/p>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>If you have a configuration that you would like to use, open it in an editor of your choice. If not, create a new config file named <code>sync-gateway-config.json<\/code> and copy the following configuration setup.<\/li>\n<\/ul>\n<pre class=\"lang:vim decode:true\"><code class=\"width-set:true lang:json wrap:true\">{\r\n  \"interface\":\":4984\",\r\n   \"logging\": {\r\n    \"log_file_path\": \"\/var\/tmp\/sglogs\",\r\n    \"console\": {\r\n      \"log_level\": \"debug\",\r\n      \"log_keys\": [\"*\"]\r\n    },\r\n    \"error\": {\r\n      \"enabled\": true,\r\n      \"rotation\": {\r\n        \"max_size\": 20,\r\n        \"max_age\": 180\r\n      }\r\n    },\r\n    \"warn\": {\r\n      \"enabled\": true,\r\n      \"rotation\": {\r\n        \"max_size\": 20,\r\n        \"max_age\": 90\r\n      }\r\n    },\r\n    \"info\": {\r\n      \"enabled\": false\r\n    },\r\n    \"debug\": {\r\n      \"enabled\": false\r\n    }\r\n  },\r\n  \"databases\": {\r\n    \"demobucket\": {\r\n      \"import_docs\": \"continuous\",\r\n      \"enable_shared_bucket_access\":true,  \r\n      \"bucket\":\"demobucket\",\r\n      \"server\": \"https:\/\/cb-server:8091\",\r\n      \"username\": \"admin\",\r\n      \"password\": \"password\",\r\n      \"num_index_replicas\":0,\r\n      \"users\":{\r\n          \"GUEST\": {\"disabled\":true},\r\n          \"admin\": {\"password\": \"password\", \"admin_channels\": [\"*\"]}\r\n      },\r\n      \"revs_limit\":20\r\n   }\r\n}\r\n}\t<\/code><\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>You can add an appropriate <code>sync<\/code> function or any of the other configuration properties. We will focus on the key ones that are essential for our development environment. You should make appropriate edits to the config file as specified below.<\/li>\n<li>The <code>server<\/code> URL specifies the name of the Couchbase Server container. In the <code>docker run<\/code> command used to launch the Couchbase Server, we specified the name using the <code>--name<\/code> option.<\/li>\n<li>The <code>database<\/code> and <code>bucket<\/code> must correspond to the <code>$COUCHBASE_BUCKET<\/code> value that you used when you configured the Couchbase Server. In our example, that was specified to be <code>demobucket<\/code>.<\/li>\n<li>The <code>username<\/code> corresponds to the username of the RBAC account that you created for bucket access as specifed by the <code>$COUCHBASE_RBAC_USERNAME<\/code> value that you used for when you configured the Couchbase Server. In our example, that was specified to be <code>admin<\/code>.<\/li>\n<li>The <code>password<\/code> corresponds to the password of the RBAC account that you created for bucket access as specified by the <code>$COUCHBASE_RBAC_PASSWORD<\/code> value that you used for when you configured the Couchbase Server. In our example, that was specified to be password.<\/li>\n<li>Once the configuration file is setup, you will launch the Sync Gateway with the file. For this, open a terminal and run the following commands<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">cd \/path\/to\/sync-gateway-config.json\r\n\r\ndocker run -p 4984-4985:4984-4985 --network cbnetwork --name sync-gateway -d -v `pwd`\/sync-gateway-config.json:\/etc\/sync_gateway\/sync_gateway.json couchbase\/sync-gateway -adminInterface :4985 \/etc\/sync_gateway\/sync_gateway.json<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>You can view the logs at any time by running the following command<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">docker logs -f sync-gateway<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>It may take a few seconds for the sync gateway to startup. Verify that the docker image is running with following command<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true \">docker ps<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Verify that your sync gateway is running by opening the URL <strong><code>https:\/\/localhost:4984<\/code><\/strong> in your browser.<br \/>\nYou should see the following output<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">{\"couchdb\":\"Welcome\",\"vendor\":{\"name\":\"Couchbase Sync Gateway\",\"version\":\"2.8\"},\"version\":\"Couchbase Sync Gateway\/2.8(2;35fe28e)\"}<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Verify that the sync gateway is talking to the Couchbase Server bucket by opening the URL <strong><code>https:\/\/localhost:4985\/demobucket\/<\/code><\/strong> in your browser. Here <code>demobucket<\/code> is the name of the database bucket that we created.<br \/>\nYou should see output similar to one below indicating the version of sync gateway<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">{\"committed_update_seq\":0,\"compact_running\":false,\"db_name\":\"demobucket\",\"disk_format_version\":0,\"instance_start_time\":1554265962361858,\"purge_seq\":0,\"state\":\"Online\",\"update_seq\":0}<\/pre>\n<p>That\u2019s it! You have your docker instance of sync gateway talking to the Couchbase Server<\/p>\n<h2 id=\"managingyourenvironment\">Managing your environment<\/h2>\n<p>In this section, we go over some basic docker commands that will be help manage your environment.<\/p>\n<h3 id=\"stoppingstartingcontainers\">Stopping\/ Starting Containers<\/h3>\n<ul>\n<li>You can stop and restart the docker containers at any point using the <code>stop<\/code> and <code>start<\/code> docker commands as follows.\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Stopping Containers<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true crayon-selected\">   docker stop sync-gateway\r\n   docker stop cb-server<\/pre>\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Starting Containers<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">    docker start cb-server\r\n    docker start sync-gateway<\/pre>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong><em>Note<\/em><\/strong> that if you stop the Couchbase Server, the Sync Gateway will attempt to reconnect with the server for a few minutes before giving up. So if the server is stopped for an extended period of time, you will need to stop and restart the Sync Gateway container as well or use the <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.1\/admin-rest-api.html#\/database\/post__db___online\"><code>_online<\/code><\/a> API to bring it back online again.<\/p>\n<h3 id=\"updatingsyncgatwayconfiguration\">Updating Sync Gatway Configuration<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>If you want to update the sync gateway configuration, you will need to re-run the Sync Gateway with an updated sync gateway config file. For this, you will need to stop and remove the sync gateway container.<\/li>\n<p>&lt;\/ul style=&#8221;padding-bottom:0px !important;&#8221;&gt;<\/ul>\n<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">docker stop sync-gateway \r\ndocker rm sync-gateway<\/pre>\n<p>If you do not remove the sync-gateway image , you will see a \u201cname conflict error\u201d similar to one below if you try to start the sync-gateway again with updated config.<\/p>\n<pre class=\"lang:sh decode:true\">docker: Error response from daemon: Conflict. The container name \"\/sync-gateway\" is already in use by container \"bc67153afda9b90303b2965b62c5e34751ce3748fd8d5fb7ed38a418d7b77cfd\". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'.<code class=\"bash\"><\/code><\/pre>\n<h3 id=\"updatingcouchbaseserverconfiguration\">Updating Couchbase Server Configuration<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul style=\"padding-bottom: 0px !important;\">\n<li>Similarly, if you want to re-run the Couchbase server with an updated configuration, you will need to stop and remove the couchbase server.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">docker stop cb-server\r\ndocker rm cb-server<\/pre>\n<p>However, depending on the server configuration that is changed, you may also need to stop and remove sync gateway container and relaunch it with updated sync gateway config file. For instance, if you changed the RBAC credentials for the bucket or if you changed the name of the bucket that.<\/p>\n<h3 id=\"runningcommandsinthecontainer\">Running commands in the container<\/h3>\n<p>Sometimes, you may want to run commands directly on the running container. For this you can use the docker <code>exec<\/code> command to open up a shell into the container. This is extremely useful for debugging and such. You will need root privileges to be able to run the command.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul style=\"padding-bottom: 0px !important;\">\n<li>couchbase server<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">sudo docker exec -i -t cb-server \/bin\/bash<\/pre>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul style=\"padding-bottom: 0px !important;\">\n<li>sync gateway<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">sudo docker exec -i -t sync-gateway \/bin\/bash<\/pre>\n<h2 id=\"resources\">Next Steps<\/h2>\n<p>As you probably gathered from this post, docker containers make it extremely convenient to get you up and going with a Couchbase Server and Sync Gateway cluster in your development environment. With the backend setup out of the way, you can focus on building your awesome mobile apps with Couchbase Lite.<\/p>\n<p>As a next step, you can use\u00a0<a href=\"https:\/\/docs.docker.com\/compose\/reference\/overview\/\">docker-compose<\/a>\u00a0to install both Couchbase Server and Sync Gateway containers. Bear in mind that the Sync Gateway depends on Couchbase Server to be up and running.<\/p>\n<p>This post discussed setting up docker container in a development environment. In a real world production environment, you would probably never deploy a single-node cluster. You would likely want to have multiple nodes for high availability. You can use an orchestration technology like\u00a0<a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.1\/kubernetes\/deploy-cluster.html\">Kubernetes<\/a> to simplify the deployment and management of your Couchbase Mobile cluster.<\/p>\n<p>If\u00a0you have questions or feedback, please leave a comment below\u00a0. \u00a0The\u00a0<a href=\"https:\/\/www.couchbase.com\/forums\/\">Couchbase Forums<\/a> are another good place to reach out with\u00a0questions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Container technologies such as Docker have vastly simplified the software development, test and deployment process by allowing you to package applications along with their complete runtime environment that abstract away differences in infrastructure and OSes. This post is a primer [&hellip;]<\/p>\n","protected":false},"author":1423,"featured_media":6640,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1810],"tags":[1520,2004,1519,1545],"ppma_author":[8948],"class_list":["post-6633","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-mobile","tag-containers","tag-couchbase-mobile-2-0","tag-docker","tag-kubernetes"],"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>Using Docker to Develop Mobile Apps with Couchbase Mobile<\/title>\n<meta name=\"description\" content=\"Use Docker to simplify Couchbase Mobile development for seamless setup, testing, and efficient environment management and quick start to building apps.\" \/>\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\/using-docker-with-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Docker to develop with Couchbase Mobile\" \/>\n<meta property=\"og:description\" content=\"Use Docker to simplify Couchbase Mobile development for seamless setup, testing, and efficient environment management and quick start to building apps.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/using-docker-with-couchbase-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-05T12:21:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-05T17:08:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"1335\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Using Docker to develop with Couchbase Mobile\",\"datePublished\":\"2021-02-05T12:21:39+00:00\",\"dateModified\":\"2026-05-05T17:08:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/\"},\"wordCount\":2207,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/04\\\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg\",\"keywords\":[\"containers\",\"couchbase mobile 2.0\",\"docker\",\"kubernetes\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Mobile\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/\",\"name\":\"Using Docker to Develop Mobile Apps with Couchbase Mobile\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/04\\\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg\",\"datePublished\":\"2021-02-05T12:21:39+00:00\",\"dateModified\":\"2026-05-05T17:08:19+00:00\",\"description\":\"Use Docker to simplify Couchbase Mobile development for seamless setup, testing, and efficient environment management and quick start to building apps.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/04\\\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2019\\\/04\\\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg\",\"width\":2048,\"height\":1335,\"caption\":\"Couchbase Cloud-Native autonomous database\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-docker-with-couchbase-mobile\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Docker to develop with Couchbase Mobile\"}]},{\"@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\\\/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\\\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/rajagp\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ko\\\/author\\\/priya-rajagopalcouchbase-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using Docker to Develop Mobile Apps with Couchbase Mobile","description":"Docker\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc6d0\ud65c\ud55c \uc124\uc815, \ud14c\uc2a4\ud2b8, \ud6a8\uc728\uc801\uc778 \ud658\uacbd \uad00\ub9ac \ubc0f \ube60\ub978 \uc571 \ube4c\ub4dc \uc2dc\uc791\uc744 \uc704\ud574 Couchbase Mobile \uac1c\ubc1c\uc744 \uac04\uc18c\ud654\ud558\uc138\uc694.","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\/using-docker-with-couchbase-mobile\/","og_locale":"ko_KR","og_type":"article","og_title":"Using Docker to develop with Couchbase Mobile","og_description":"Use Docker to simplify Couchbase Mobile development for seamless setup, testing, and efficient environment management and quick start to building apps.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/using-docker-with-couchbase-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-02-05T12:21:39+00:00","article_modified_time":"2026-05-05T17:08:19+00:00","og_image":[{"width":2048,"height":1335,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg","type":"image\/jpeg"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"10\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Using Docker to develop with Couchbase Mobile","datePublished":"2021-02-05T12:21:39+00:00","dateModified":"2026-05-05T17:08:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/"},"wordCount":2207,"commentCount":6,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg","keywords":["containers","couchbase mobile 2.0","docker","kubernetes"],"articleSection":["Best Practices and Tutorials","Couchbase Mobile"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/","name":"Using Docker to Develop Mobile Apps with Couchbase Mobile","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg","datePublished":"2021-02-05T12:21:39+00:00","dateModified":"2026-05-05T17:08:19+00:00","description":"Docker\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc6d0\ud65c\ud55c \uc124\uc815, \ud14c\uc2a4\ud2b8, \ud6a8\uc728\uc801\uc778 \ud658\uacbd \uad00\ub9ac \ubc0f \ube60\ub978 \uc571 \ube4c\ub4dc \uc2dc\uc791\uc744 \uc704\ud574 Couchbase Mobile \uac1c\ubc1c\uc744 \uac04\uc18c\ud654\ud558\uc138\uc694.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/kisscc0-docker-intermodal-container-shipping-container-kub-travel-5afd8a87c60168.218365771526565511811.jpg","width":2048,"height":1335,"caption":"Couchbase Cloud-Native autonomous database"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/using-docker-with-couchbase-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Docker to develop with Couchbase Mobile"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","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":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","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\/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\/c2da90e57717ee4970c48a87a131ac2c","name":"\ud504\ub9ac\uc57c \ub77c\uc790\uace0\ud314, \uc81c\ud488 \uad00\ub9ac \ubd80\ubb38 \uc120\uc784 \uc774\uc0ac","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"\ud504\ub9ac\uc57c \ub77c\uc790\uace0\ud314\uc740 \ud074\ub77c\uc6b0\ub4dc \ubc0f \uc5e3\uc9c0\uc6a9 \uac1c\ubc1c\uc790 \ud50c\ub7ab\ud3fc\uc744 \ub2f4\ub2f9\ud558\ub294 Couchbase\uc758 \uc81c\ud488 \uad00\ub9ac \uc218\uc11d \uc774\uc0ac\uc785\ub2c8\ub2e4. \uadf8\ub140\ub294 20\ub144 \uc774\uc0c1 \uc5ec\ub7ec \uae30\uc220 \ubc0f \uc81c\ud488 \ub9ac\ub354\uc2ed \uc9c1\ucc45\uc744 \ub9e1\uc73c\uba70 \uc804\ubb38\uc801\uc73c\ub85c \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub97c \uac1c\ubc1c\ud574 \uc654\uc73c\uba70, \uadf8\uc911 10\ub144 \uc774\uc0c1\uc740 \ubaa8\ubc14\uc77c \uae30\uc220\uc5d0 \uc9d1\uc911\ud588\uc2b5\ub2c8\ub2e4. TISPAN IPTV \ud45c\uc900 \ub300\ud45c\ub85c\uc11c IPTV \ud45c\uc900 \uc0ac\uc591\uc5d0 \ud575\uc2ec\uc801\uc778 \uae30\uc5ec\ub97c \ud588\uc2b5\ub2c8\ub2e4. \ub124\ud2b8\uc6cc\ud0b9 \ubc0f \ud50c\ub7ab\ud3fc \ubcf4\uc548 \ubd84\uc57c\uc5d0\uc11c 22\uac1c\uc758 \ud2b9\ud5c8\ub97c \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/priya-rajagopalcouchbase-com\/"}]}},"acf":[],"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?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\/6633","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\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=6633"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/6633\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/6640"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=6633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=6633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=6633"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=6633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}