{"id":2319,"date":"2017-01-06T07:06:55","date_gmt":"2017-01-06T07:06:54","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2319"},"modified":"2023-11-17T08:43:26","modified_gmt":"2023-11-17T16:43:26","slug":"docker-services-stack-distributed-application-bundle","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/docker-services-stack-distributed-application-bundle\/","title":{"rendered":"Docker \uc11c\ube44\uc2a4, \uc2a4\ud0dd \ubc0f \ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4"},"content":{"rendered":"<p><a href=\"\/wp-content\/original-assets\/july2015\/docker-services-stack-and-distributed-application-bundle\/docker-1.12.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-14057 size-full\" src=\"\/wp-content\/original-assets\/july2015\/docker-services-stack-and-distributed-application-bundle\/docker-1.12.jpg\" alt=\"docker-1.12\" width=\"280\" height=\"300\" \/><\/a><\/p>\n<p><a href=\"https:\/\/github.com\/docker\/docker\/releases\/tag\/v1.12.0-rc1\">Docker 1.12\uc758 \uccab \ubc88\uc9f8 \ub9b4\ub9ac\uc2a4 \ud6c4\ubcf4<\/a> \ub97c \ud1b5\ud574 \ubc1c\ud45c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/blog.docker.com\/2016\/06\/docker-1-12-built-in-orchestration\/\">2\uc8fc \uc804<\/a>. \uba87 \uac00\uc9c0 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<br \/>\n\uc774\ubc88 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \uacc4\ud68d\ub41c \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/distributed-applications\/\">\ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/a> Docker Compose\uc5d0\uc11c \ubc88\ub4e4\uc744 \uc0dd\uc131\ud558\uace0 \ub2e4\uc74c\uc5d0\uc11c Docker Stack\uc73c\ub85c \ubc30\ud3ec\ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/deploy-docker-compose-services-swarm\/\">\ub3c4\ucee4 \uc2a4\uc6dc<\/a> \ubaa8\ub4dc. \ub9ce\uc740 \ubd84\ub4e4\uaed8 \uac10\uc0ac\ub4dc\ub9bd\ub2c8\ub2e4. <a href=\"https:\/\/twitter.com\/friism\">\ud504\ub9ac\uc998<\/a>\u00a0\uc774\ub7ec\ud55c \uac1c\ub150\uc744 \uc774\ud574\ud558\ub294 \ub370 \ub3c4\uc6c0\uc744 \uc8fc\uc168\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800 \uae30\ub2a5\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li><strong>\uae30\ubcf8 \uc81c\uacf5 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158<\/strong>: \uc77c\ubc18\uc801\uc778 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 Docker Compose \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc815\uc758\ub429\ub2c8\ub2e4. \uc774 \uc815\uc758\ub294 \uc5ec\ub7ec \ucee8\ud14c\uc774\ub108\ub85c \uad6c\uc131\ub418\uba70 \uc5ec\ub7ec \ud638\uc2a4\ud2b8\uc5d0 \ubc30\ud3ec\ub429\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ub2e8\uc77c \uc7a5\uc560 \uc9c0\uc810(SPOF)\uc744 \ubc29\uc9c0\ud558\uace0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc548\uc815\uc801\uc73c\ub85c \uc720\uc9c0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\ubcf5\uc6d0\ub825. Docker Swarm, Kubernetes \ubc0f Mesos\uc640 \uac19\uc740 \uc5ec\ub7ec \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158 \ud504\ub808\uc784\uc6cc\ud06c\ub97c \ud1b5\ud574 \uc774\ub7ec\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc911\uc694\ud55c \ud2b9\uc131\uc778 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158\uc744 \uc704\ud574 \uc774\uc81c Docker Engine\uc5d0 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158\uc774 \uae30\ubcf8 \uc81c\uacf5\ub429\ub2c8\ub2e4.<br \/>\n\uc774 \uc8fc\uc81c\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ucd94\ud6c4 \ube14\ub85c\uadf8\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\uc11c\ube44\uc2a4<\/strong>: \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubcf5\uc81c, \ubd84\uc0b0 \ubc0f \ub85c\ub4dc \ubc38\ub7f0\uc2f1\ub41c \uc11c\ube44\uc2a4\ub97c \uc27d\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\ub3c4\ucee4 \uc11c\ube44\uc2a4 \uc0dd\uc131<\/code> \uba85\ub839\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ucee8\ud14c\uc774\ub108 3\uac1c \uc2e4\ud589\uacfc \uac19\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 '\uc6d0\ud558\ub294 \uc0c1\ud0dc'\uac00 \uc81c\uacf5\ub418\uace0<br \/>\n\uc790\uac00 \ubcf5\uad6c Docker \uc5d4\uc9c4\uc740 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \ub9ce\uc740 \ucee8\ud14c\uc774\ub108\uac00 \uc2e4\ud589\ub418\ub3c4\ub85d \ubcf4\uc7a5\ud569\ub2c8\ub2e4. \ucee8\ud14c\uc774\ub108\uac00 \ub2e4\uc6b4\ub418\uba74 \ub2e4\ub978 \ucee8\ud14c\uc774\ub108\uac00 \uc2dc\uc791\ub429\ub2c8\ub2e4. \ub178\ub4dc\uac00 \ub2e4\uc6b4\ub418\uba74 \ud574\ub2f9 \ub178\ub4dc\uc758 \ucee8\ud14c\uc774\ub108\ub294 \ub2e4\ub978 \ub178\ub4dc\uc5d0\uc11c \uc2dc\uc791\ub429\ub2c8\ub2e4. \uc774\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub098\uc911\uc5d0<br \/>\n\ube14\ub85c\uadf8.<\/li>\n<li><strong>\uc124\uc815\uc774 \ud544\uc694 \uc5c6\ub294 \ubcf4\uc548<\/strong>: Docker 1.12\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc2a4\uc6dc\uc5d0 \ucc38\uc5ec\ud558\ub294 \ubaa8\ub4e0 \ub178\ub4dc\uc758 \ud1b5\uc2e0\uc5d0 \uc778\uc99d, \uad8c\ud55c \ubd80\uc5ec \ubc0f \uc554\ud638\ud654\ub97c \uc81c\uacf5\ud558\ub294 \uc0c1\ud638 \uc778\uc99d\ub41c TLS\uc640 \ud568\uaed8 \uc81c\uacf5\ub429\ub2c8\ub2e4. \uc774\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740<br \/>\n\ub098\uc911\uc5d0 \ube14\ub85c\uadf8\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\ub3c4\ucee4 \uc2a4\ud0dd \ubc0f \ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4<\/strong>: \ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4(DAB)\uc740 \uc5ec\ub7ec \uc11c\ube44\uc2a4\uc5d0 \ubc30\ud3ec\ud560 \uc218 \uc788\ub294 \uc774\ubbf8\uc9c0 \ud615\uc2dd\uc785\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc790\uc138\ud788 \uc77d\uc5b4\ubcf4\uc138\uc694.<\/li>\n<\/ul>\n<p>\uc9c0\uae08\uae4c\uc9c0\ub294 <code>\ub3c4\ucee4\ud30c\uc77c<\/code>\u00a0\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4e4\uace0 <code>\ub3c4\ucee4 \ube4c\ub4dc<\/code> \uba85\ub839\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ucee8\ud14c\uc774\ub108\ub294 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<code>\ub3c4\ucee4 \uc2e4\ud589<\/code> \uba85\ub839\uc5b4\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. \uc5ec\ub7ec \uac1c\uc758 \ucee8\ud14c\uc774\ub108\ub97c \uc27d\uac8c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\uba85\ub839\uc744 \uc5ec\ub7ec \ubc88 \uc2e4\ud589\ud558\uc138\uc694. \ub610\ub294 Docker Compose \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uc5ec \ucee8\ud14c\uc774\ub108\ub97c \ud655\uc7a5\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. <code>\ub3c4\ucee4-\ucef4\ud3ec\uc988 \uc2a4\ucf00\uc77c<\/code> \uba85\ub839\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<br \/>\n<a href=\"\/wp-content\/original-assets\/july2015\/docker-services-stack-and-distributed-application-bundle\/docker-lifecycle-1024x329.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14051\" src=\"\/wp-content\/original-assets\/july2015\/docker-services-stack-and-distributed-application-bundle\/docker-lifecycle-1024x329.png\" alt=\"docker-lifecycle\" width=\"604\" height=\"194\" \/><\/a><\/p>\n<p>\uc774\ubbf8\uc9c0\ub294 \ub2e8\uc77c \ucee8\ud14c\uc774\ub108\uc758 \uc774\ub3d9 \uac00\ub2a5\ud55c \ud615\uc2dd\uc785\ub2c8\ub2e4. <a href=\"https:\/\/docker.com\/dab\">\ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4<\/a>\ub610\ub294 DAB\ub294 Docker 1.12\uc5d0 \ub3c4\uc785\ub41c \uc0c8\ub85c\uc6b4 \uac1c\ub150\uc73c\ub85c, \uc5ec\ub7ec \ucee8\ud14c\uc774\ub108\ub97c \uc704\ud55c \uc774\uc2dd \uac00\ub2a5\ud55c \ud615\uc2dd\uc785\ub2c8\ub2e4. \uac01 \ubc88\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\na <em>\uc2a4\ud0dd<\/em>\u00a0\ub7f0\ud0c0\uc784\uc5d0.<\/p>\n<p><a href=\"\/wp-content\/original-assets\/july2015\/docker-services-stack-and-distributed-application-bundle\/docker-stack-lifecycle-1024x344.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-14052\" src=\"\/wp-content\/original-assets\/july2015\/docker-services-stack-and-distributed-application-bundle\/docker-stack-lifecycle-1024x344.png\" alt=\"docker-stack-lifecycle\" width=\"604\" height=\"203\" \/><\/a><\/p>\n<p>DAB\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30 <a href=\"https:\/\/docker.com\/dab\">docker.com\/dab<\/a>. \uac04\ub2e8\ud788 \uc124\uba85\ud558\uae30 \uc704\ud574 \ube44\uc720\ub97c \ub4e4\uc5b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/p>\n<p><strong>\ub3c4\ucee4\ud30c\uc77c -&gt; \uc774\ubbf8\uc9c0 -&gt; \ucee8\ud14c\uc774\ub108<\/strong><\/p>\n<p><strong>\ub3c4\ucee4 \ucef4\ud3ec\uc988 -&gt; \ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4 -&gt; \ub3c4\ucee4 \uc2a4\ud0dd<\/strong><\/p>\n<p>Docker Compose \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uc5ec DAB\ub97c \uc0dd\uc131\ud558\uace0, \uc774\ub97c Docker Stack\uc73c\ub85c \ubc30\ud3ec\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><span style=\"color: #333333;line-height: 20.8px;text-align: left\">\uc774 \uae30\ub2a5\uc740 1.12-RC2\uc758 \uc2e4\ud5d8\uc801 \uae30\ub2a5\uc774\ub77c\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694.<\/span><\/p>\n<h2>Docker Compose\uc5d0\uc11c \ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4 \ub9cc\ub4e4\uae30<\/h2>\n<p>\ub3c4\ucee4 \ucef4\ud3ec\uc988 CLI\uc5d0 \uc0c8\ub85c\uc6b4 <code>\ubc88\ub4e4<\/code> \uba85\ub839\uc5b4\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">docker-compose bundle --help\r\nGenerate a Docker bundle from the Compose file.\r\n\r\nLocal images will be pushed to a Docker registry, and remote images\r\nwill be pulled to fetch an image digest.\r\n\r\nUsage: bundle [options]\r\n\r\nOptions:\r\n    -o, --output PATH          Path to write the bundle file to.\r\n                               Defaults to \".dsb\".<\/pre>\n<p>\uc774\uc81c Docker Compose \uc815\uc758\ub97c \uac00\uc838\uc640\uc11c DAB\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 Docker Compose \uc815\uc758\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">version: \"2\"\r\nservices:\r\n  db:\r\n    container_name: \"db\"\r\n    image: arungupta\/oreilly-couchbase:latest\r\n    ports:\r\n      - 8091:8091\r\n      - 8092:8092 \r\n      - 8093:8093 \r\n      - 11210:11210\r\n  web:\r\n    image: arungupta\/oreilly-wildfly:latest\r\n    depends_on:\r\n      - db\r\n    environment:\r\n      - COUCHBASE_URI=db\r\n    ports:\r\n      - 8080:8080<\/pre>\n<p>\uc774 Compose \ud30c\uc77c\uc740 WildFly\uc640 Couchbase \uc11c\ubc84\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4. WildFly \uc11c\ubc84\uc5d0 \ubbf8\ub9ac \ubc30\ud3ec\ub41c Java EE \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 Couchbase \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ub418\uace0 REST API\ub97c \uc0ac\uc6a9\ud558\uc5ec CRUD \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud30c\uc77c\uc758 \uc18c\uc2a4\ub294 \ub2e4\uc74c \uc704\uce58\uc5d0 \uc788\uc2b5\ub2c8\ub2e4:<br \/>\n<a href=\"https:\/\/github.com\/arun-gupta\/oreilly-docker-book\/blob\/master\/hello-javaee\/docker-compose.yml\">github.com\/arun-gupta\/oreilly-docker-book\/blob\/master\/hello-javaee\/docker-compose.yml<\/a>. \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">docker-compose bundle\r\nWARNING: Unsupported key 'depends_on' in services.web - ignoring\r\nWARNING: Unsupported key 'container_name' in services.db - ignoring\r\nWrote bundle to hellojavaee.dsb<\/pre>\n<p><code>depends_on<\/code> \ub294 \ub450 \uc11c\ube44\uc2a4 \uac04\uc5d0 \uc885\uc18d\uc131\ub9cc \uc0dd\uc131\ud558\uace0 \ud2b9\uc815 \uc21c\uc11c\ub85c \uc2dc\uc791\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 Docker \ucee8\ud14c\uc774\ub108\ub9cc \uc2dc\uc791\ub418\uc9c0\ub9cc \ucee8\ud14c\uc774\ub108 \ub0b4\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \uc2dc\uc791\ud558\ub294 \ub370 \uc2dc\uac04\uc774 \ub354 \uc624\ub798 \uac78\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774 \uc18d\uc131\uc740<br \/>\n\ub97c \uc0ac\uc6a9\ud558\uba74 \ubb38\uc81c\uac00 \ubd80\ubd84\uc801\uc73c\ub85c \ud574\uacb0\ub429\ub2c8\ub2e4.\u00a0<code>\ucee8\ud14c\uc774\ub108_\uc774\ub984<\/code> \ub294 \ucee8\ud14c\uc774\ub108\uc5d0 \ud2b9\uc815 \uc774\ub984\uc744 \ubd80\uc5ec\ud569\ub2c8\ub2e4. \ud2b9\uc815 \ucee8\ud14c\uc774\ub108 \uc774\ub984\uc5d0 \uc758\uc874\ud558\ub294 \uac83\uc740 \uae34\ubc00\ud55c \uacb0\ud569\uc774\uba70 \ucee8\ud14c\uc774\ub108\ub97c \ud655\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.  \ub530\ub77c\uc11c \ub450 \uacbd\uace0\ub97c \ubaa8\ub450 \ubb34\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4,<br \/>\n\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. \uc774 \uba85\ub839\uc740 \ub514\ub809\ud1a0\ub9ac \uc774\ub984\uc778 Compose \ud504\ub85c\uc81d\ud2b8 \uc774\ub984\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud30c\uc77c\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc6b0\ub9ac\uc758 \uacbd\uc6b0 <code>hellojavaee.dsb<\/code> \ud30c\uc77c\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uc774 \ud30c\uc77c \ud655\uc7a5\uc790\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. <code>.dab<\/code> \ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc0dd\uc131\ub41c<br \/>\n\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4\uc758 \ubaa8\uc2b5\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"services\": {\r\n    \"db\": {\r\n      \"Image\": \"arungupta\/oreilly-couchbase@sha256:f150fcb9fca5392075c96f1baffc7f893858ba763f3c05cf0908ef2613cbf34c\", \r\n      \"Networks\": [\r\n        \"default\"\r\n      ], \r\n      \"Ports\": [\r\n        {\r\n          \"Port\": 8091, \r\n          \"Protocol\": \"tcp\"\r\n        }, \r\n        {\r\n          \"Port\": 8092, \r\n          \"Protocol\": \"tcp\"\r\n        }, \r\n        {\r\n          \"Port\": 8093, \r\n          \"Protocol\": \"tcp\"\r\n        }, \r\n        {\r\n          \"Port\": 11210, \r\n          \"Protocol\": \"tcp\"\r\n        }\r\n      ]\r\n    }, \r\n    \"web\": {\r\n      \"Env\": [\r\n        \"COUCHBASE_URI=db\"\r\n      ], \r\n      \"Image\": \"arungupta\/oreilly-wildfly@sha256:d567ade7bb82ba8f15a85df0c6d692d85c15ec5a78d8826dfba92756babcb914\", \r\n      \"Networks\": [\r\n        \"default\"\r\n      ], \r\n      \"Ports\": [\r\n        {\r\n          \"Port\": 8080, \r\n          \"Protocol\": \"tcp\"\r\n        }\r\n      ]\r\n    }\r\n  }, \r\n  \"version\": \"0.1\"\r\n}<\/pre>\n<p>\uc774 \ud30c\uc77c\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ud3ec\ud568\ub41c \uc11c\ube44\uc2a4\uc5d0 \ub300\ud55c \uc804\uccb4 \uc124\uba85\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4\uc774 \uac00\uc7a5 \uc801\uc808\ud55c \uc774\ub984\uc778\uc9c0 \uc798 \ubaa8\ub974\uaca0\uc2b5\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/github.com\/docker\/docker\/issues\/24250\">#24250<\/a>. It<br \/>\n\uc5d0\uc11c Rkt\ub098 VM\uacfc \uac19\uc740 \ub2e4\ub978 \ucee8\ud14c\uc774\ub108 \ud615\uc2dd\ub3c4 \uc9c0\uc6d0\ud560 \uc218 \uc788\ub2e4\uba74 \uc88b\uc744 \uac83 \uac19\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ud604\uc7ac\ub85c\uc11c\ub294 Docker\ub9cc\uc774 \uc9c0\uc6d0\ub418\ub294 \uc720\uc77c\ud55c \ud615\uc2dd\uc785\ub2c8\ub2e4.<\/p>\n<h2>\ub3c4\ucee4\uc5d0\uc11c \uc2a4\uc6dc \ubaa8\ub4dc \ucd08\uae30\ud654\ud558\uae30<\/h2>\n<p>\uc704\uc5d0\uc11c \uc5b8\uae09\ud588\ub4ef\uc774, \uc774\uc81c \"\uc6d0\ud558\ub294 \uc0c1\ud0dc\"\ub294 Docker Swarm\uc5d0 \uc758\ud574 \uc720\uc9c0\ub429\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc774\uac83\uc740 \uc774\uc81c \uc774\ubbf8 Docker \uc5d4\uc9c4\uc5d0 \ubca0\uc774\ud06c\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \ub3c4\ucee4 \uc2a4\uc6dc \uac1c\ub150\ub3c4 \ubc1c\uc804\ud588\uc73c\uba70 \ub2e4\uc74c\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/docs.docker.com\/engine\/swarm\/key-concepts\/\">\uc2a4\uc6dc \ubaa8\ub4dc \uc8fc\uc694 \uac1c\ub150<\/a>. A<br \/>\n\uc774\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ucd94\ud6c4 \ube14\ub85c\uadf8\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 \uc0c8\ub85c\uc6b4 \uba85\ub839\uc5b4\u00a0<code>\ub3c4\ucee4 \uc2a4\uc6dc<\/code> \uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">docker swarm --help\r\n\r\nUsage: docker swarm COMMAND\r\n\r\nManage Docker Swarm\r\n\r\nOptions:\r\n      --help   Print usage\r\n\r\nCommands:\r\n  init        Initialize a Swarm\r\n  join        Join a Swarm as a node and\/or manager\r\n  update      Update the Swarm\r\n  leave       Leave a Swarm\r\n  inspect     Inspect the Swarm\r\n\r\nRun 'docker swarm COMMAND --help' for more information on a command.<\/pre>\n<p>\ub3c4\ucee4 \uc5d4\uc9c4\uc5d0\uc11c \uc2a4\uc6dc \ub178\ub4dc(\uad00\ub9ac\uc790\ub85c)\ub97c \ucd08\uae30\ud654\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">docker swarm init\r\nSwarm initialized: current node (ek9p1k8r8ox7iiua5c247skci) is now a manager.<\/pre>\n<p>\uc774 \ub178\ub4dc\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\ub3c4\ucee4 \ub178\ub4dc \uac80\uc0ac<\/code> \uc790\uccb4 \uba85\ub839.<\/p>\n<p>\uc790\uc138\ud55c \ucd9c\ub825 \ub0b4\uc6a9\uc740 \uc7a5\ud669\ud558\uc9c0\ub9cc \uad00\ub828 \uc139\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre>\"Spec\": {\r\n            \"Role\": \"manager\",\r\n            \"Membership\": \"accepted\",\r\n            \"Availability\": \"active\"\r\n        },\r\n<\/pre>\n<p>\ucd9c\ub825\uc740 \ub178\ub4dc\uac00 \ub9e4\ub2c8\uc800\uc784\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \ub2e8\uc77c \ub178\ub4dc \ud074\ub7ec\uc2a4\ud130\uc758 \uacbd\uc6b0 \uc774 \ub178\ub4dc\ub294 \uc791\uc5c5\uc790 \uc5ed\ud560\ub3c4 \ud569\ub2c8\ub2e4.<\/p>\n<p>\ud074\ub7ec\uc2a4\ud130\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\ub3c4\ucee4 \uc2a4\uc6dc \uac80\uc0ac<\/code> \uba85\ub839\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">docker swarm inspect\r\n[\r\n    {\r\n        \"ID\": \"1rcvu7m9mv2c8hiaijr7an9zk\",\r\n        \"Version\": {\r\n            \"Index\": 1895\r\n        },\r\n        \"CreatedAt\": \"2016-07-01T23:52:38.074748177Z\",\r\n        \"UpdatedAt\": \"2016-07-02T04:54:32.79093117Z\",\r\n        \"Spec\": {\r\n            \"Name\": \"default\",\r\n            \"AcceptancePolicy\": {\r\n                \"Policies\": [\r\n                    {\r\n                        \"Role\": \"worker\",\r\n                        \"Autoaccept\": true\r\n                    },\r\n                    {\r\n                        \"Role\": \"manager\",\r\n                        \"Autoaccept\": false\r\n                    }\r\n                ]\r\n            },\r\n            \"Orchestration\": {\r\n                \"TaskHistoryRetentionLimit\": 10\r\n            },\r\n            \"Raft\": {\r\n                \"SnapshotInterval\": 10000,\r\n                \"LogEntriesForSlowFollowers\": 500,\r\n                \"HeartbeatTick\": 1,\r\n                \"ElectionTick\": 3\r\n            },\r\n            \"Dispatcher\": {\r\n                \"HeartbeatPeriod\": 5000000000\r\n            },\r\n            \"CAConfig\": {\r\n                \"NodeCertExpiry\": 7776000000000000\r\n            }\r\n        }\r\n    }\r\n]<\/pre>\n<p><code>\uc218\ub77d \uc815\ucc45<\/code> \ub294 \ub2e4\ub978 <code>worker<\/code> \ub178\ub4dc\ub294 \uc774 \ud074\ub7ec\uc2a4\ud130\uc5d0 \ucc38\uc5ec\ud560 \uc218 \uc788\uc9c0\ub9cc \uad00\ub9ac\uc790\uc758 \uba85\uc2dc\uc801\uc778 \uc2b9\uc778\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<h2>\ub3c4\ucee4 \uc2a4\ud0dd \ubc30\ud3ec<\/h2>\n<p>\ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc2a4\ud0dd\uc744 \ub9cc\ub4ed\ub2c8\ub2e4. <code>\ub3c4\ucee4 \ubc30\ud3ec<\/code> \uba85\ub839\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">docker deploy -f hellojavaee.dsb hellojavaee\r\nLoading bundle from hellojavaee.dsb\r\nCreating network hellojavaee_default\r\nCreating service hellojavaee_db\r\nCreating service hellojavaee_web<\/pre>\n<p>\uba85\ub839 \uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uc5d0\uc11c \uc124\uba85\ud558\ub294 \uac83\ucc98\ub7fc \ud655\uc2e4\ud788 \ub2e8\uc21c\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/github.com\/docker\/docker\/issues\/24249\">#24249<\/a>. \uc11c\ube44\uc2a4 \ubaa9\ub85d\uc744 \ucc38\uc870\ud558\uc138\uc694:<\/p>\n<pre class=\"lang:default decode:true\">docker service ls\r\nID            NAME             REPLICAS  IMAGE                                                                                                COMMAND\r\n2g8kmrimztes  hellojavaee_web  1\/1       arungupta\/oreilly-wildfly@sha256:d567ade7bb82ba8f15a85df0c6d692d85c15ec5a78d8826dfba92756babcb914    \r\n46xhlb15cc60  hellojavaee_db   1\/1       arungupta\/oreilly-couchbase@sha256:f150fcb9fca5392075c96f1baffc7f893858ba763f3c05cf0908ef2613cbf34c<\/pre>\n<p>\ucd9c\ub825\uc5d0\ub294 \ub450 \uac1c\uc758 \uc11c\ube44\uc2a4, \uc989 WildFly\uc640 Couchbase\uac00 \uc2e4\ud589\ub418\uace0 \uc788\uc74c\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. <a href=\"https:\/\/docs.docker.com\/engine\/swarm\/key-concepts\/#\/Services-and-tasks\">\uc11c\ube44\uc2a4<\/a> \ub3c4 \ub3c4\ucee4 1.12\uc5d0 \ub3c4\uc785\ub41c \uc0c8\ub85c\uc6b4 \uac1c\ub150\uc785\ub2c8\ub2e4. \uc774 \uac1c\ub150\uc740<br \/>\n\"\uc6d0\ud558\ub294 \uc0c1\ud0dc\"\ub97c \uc124\uc815\ud558\uba74 Docker \uc5d4\uc9c4\uc774 \uc774\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. <code>\ub3c4\ucee4 PS<\/code> \ub294 \uc2e4\ud589 \uc911\uc778 \ucee8\ud14c\uc774\ub108 \ubaa9\ub85d\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">CONTAINER ID        IMAGE                                                                                                 COMMAND                  CREATED             STATUS              PORTS                                                        NAMES\r\n622756277f40        arungupta\/oreilly-couchbase@sha256:f150fcb9fca5392075c96f1baffc7f893858ba763f3c05cf0908ef2613cbf34c   \"\/entrypoint.sh \/opt\/\"   3 seconds ago       Up 1 seconds        8091-8093\/tcp, 11207\/tcp, 11210-11211\/tcp, 18091-18092\/tcp   hellojavaee_db.1.19enwdt6i5m853m5675tx3z29\r\nabf8703ed713        arungupta\/oreilly-wildfly@sha256:d567ade7bb82ba8f15a85df0c6d692d85c15ec5a78d8826dfba92756babcb914     \"\/opt\/jboss\/wildfly\/b\"   3 seconds ago       Up 1 seconds        8080\/tcp                                                     hellojavaee_web.1.70piloz6j4zt06co8htzisgyl<\/pre>\n<p>WildFly \ucee8\ud14c\uc774\ub108\uac00 Couchbase \ucee8\ud14c\uc774\ub108\uac00 \uc2e4\ud589\ub418\uae30 \uc804\uc5d0 \uc2dc\uc791\ub429\ub2c8\ub2e4. \uc989, Java EE \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 Couchbase \uc11c\ubc84\uc5d0 \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\ub2e4\uac00 \uc2e4\ud328\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc131\uacf5\uc801\uc73c\ub85c \ubd80\ud305\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc790\uac00 \uce58\uc720 \ub3c4\ucee4 \uc11c\ube44\uc2a4<\/h2>\n<p>Docker \uc11c\ube44\uc2a4\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \"\uc6d0\ud558\ub294 \uc0c1\ud0dc\"\ub97c \uc720\uc9c0\ud569\ub2c8\ub2e4. \uc774 \uacbd\uc6b0 \uc6d0\ud558\ub294 \uc0c1\ud0dc\ub294 \uc11c\ube44\uc2a4\uc5d0 \ub300\ud55c \ucee8\ud14c\uc774\ub108\uac00 \ud558\ub098\ub9cc \uc2e4\ud589\ub418\ub3c4\ub85d \ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc11c\ube44\uc2a4\uac00 \uc544\ub2cc \ucee8\ud14c\uc774\ub108\ub97c \uc81c\uac70\ud558\uba74 \uc11c\ube44\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ub429\ub2c8\ub2e4.<br \/>\n\ucee8\ud14c\uc774\ub108\ub97c \uc790\ub3d9\uc73c\ub85c \ub2e4\uc2dc \uc2dc\uc791\ud569\ub2c8\ub2e4. \ucee8\ud14c\uc774\ub108\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc81c\uac70\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">docker rm -f abf8703ed713<\/pre>\n<p>\ucc38\uace0, \ub2e4\uc74c \uc0ac\ud56d\uc744 \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. <code>-f<\/code> \ucee8\ud14c\uc774\ub108\uac00 \uc774\ubbf8 \uc2e4\ud589 \uc911\uc774\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. Docker 1.12\uc758 \uc790\uac00 \ubcf5\uad6c \uba54\ucee4\ub2c8\uc998\uc774 \uc2dc\uc791\ub418\uc5b4 \ucee8\ud14c\uc774\ub108\uac00 \uc790\ub3d9\uc73c\ub85c \ub2e4\uc2dc \uc2dc\uc791\ub429\ub2c8\ub2e4. \uc774\uc81c \ucee8\ud14c\uc774\ub108\ub97c \ub2e4\uc2dc \ub098\uc5f4\ud558\uba74<\/p>\n<pre class=\"lang:default decode:true\">CONTAINER ID        IMAGE                                                                                                 COMMAND                  CREATED             STATUS                  PORTS                                                        NAMES\r\ndb483ac27e41        arungupta\/oreilly-wildfly@sha256:d567ade7bb82ba8f15a85df0c6d692d85c15ec5a78d8826dfba92756babcb914     \"\/opt\/jboss\/wildfly\/b\"   1 seconds ago       Up Less than a second   8080\/tcp                                                     hellojavaee_web.1.ddvwdmojjysf46d4n3x4g8uv4\r\n622756277f40        arungupta\/oreilly-couchbase@sha256:f150fcb9fca5392075c96f1baffc7f893858ba763f3c05cf0908ef2613cbf34c   \"\/entrypoint.sh \/opt\/\"   26 seconds ago      Up 25 seconds           8091-8093\/tcp, 11207\/tcp, 11210-11211\/tcp, 18091-18092\/tcp   hellojavaee_db.1.19enwdt6i5m853m5675tx3z29<\/pre>\n<p>\uc0c8 \ucee8\ud14c\uc774\ub108\uac00 \uc2dc\uc791\ub418\uc5c8\uc74c\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. WildFly \uc11c\ube44\uc2a4\ub97c \uac80\uc0ac\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">docker service inspect hellojavaee_web\r\n[\r\n    {\r\n        \"ID\": \"54otfi6dc9bis7z6gc6ubynwc\",\r\n        \"Version\": {\r\n            \"Index\": 328\r\n        },\r\n        \"CreatedAt\": \"2016-07-02T01:36:35.735767569Z\",\r\n        \"UpdatedAt\": \"2016-07-02T01:36:35.739240775Z\",\r\n        \"Spec\": {\r\n            \"Name\": \"hellojavaee_web\",\r\n            \"Labels\": {\r\n                \"com.docker.stack.namespace\": \"hellojavaee\"\r\n            },\r\n            \"TaskTemplate\": {\r\n                \"ContainerSpec\": {\r\n                    \"Image\": \"arungupta\/oreilly-wildfly@sha256:d567ade7bb82ba8f15a85df0c6d692d85c15ec5a78d8826dfba92756babcb914\",\r\n                    \"Env\": [\r\n                        \"COUCHBASE_URI=db\"\r\n                    ]\r\n                }\r\n            },\r\n            \"Mode\": {\r\n                \"Replicated\": {\r\n                    \"Replicas\": 1\r\n                }\r\n            },\r\n            \"Networks\": [\r\n                {\r\n                    \"Target\": \"epw57lz7txtfchmbf6u0cimis\",\r\n                    \"Aliases\": [\r\n                        \"web\"\r\n                    ]\r\n                }\r\n            ],\r\n            \"EndpointSpec\": {\r\n                \"Mode\": \"vip\",\r\n                \"Ports\": [\r\n                    {\r\n                        \"Protocol\": \"tcp\",\r\n                        \"TargetPort\": 8080\r\n                    }\r\n                ]\r\n            }\r\n        },\r\n        \"Endpoint\": {\r\n            \"Spec\": {},\r\n            \"Ports\": [\r\n                {\r\n                    \"Protocol\": \"tcp\",\r\n                    \"TargetPort\": 8080,\r\n                    \"PublishedPort\": 30004\r\n                }\r\n            ],\r\n            \"VirtualIPs\": [\r\n                {\r\n                    \"NetworkID\": \"9lpz688ir3pzexubkcb828ikg\",\r\n                    \"Addr\": \"10.255.0.5\/16\"\r\n                },\r\n                {\r\n                    \"NetworkID\": \"epw57lz7txtfchmbf6u0cimis\",\r\n                    \"Addr\": \"10.0.0.4\/24\"\r\n                }\r\n            ]\r\n        }\r\n    }\r\n]<\/pre>\n<p>\uc2a4\uc6dc\uc740 \uc11c\ube44\uc2a4\uc5d0 \uc784\uc758\uc758 \ud3ec\ud2b8\ub97c \ud560\ub2f9\ud558\uac70\ub098 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc218\ub3d9\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\ub3c4\ucee4 \uc11c\ube44\uc2a4 \uc5c5\ub370\uc774\ud2b8<\/code> \uba85\ub839\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774 \uacbd\uc6b0 \ud3ec\ud2b8 <code>8080<\/code> \uc5d0 \ub9e4\ud551\ub41c \ucee8\ud14c\uc774\ub108\uc758 <code>30004<\/code> \ud3ec\ud2b8\uc5d0 \uc5f0\uacb0\ud569\ub2c8\ub2e4.<\/p>\n<h2>\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud655\uc778<\/h2>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc131\uacf5\uc801\uc73c\ub85c \ubc30\ud3ec\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl https:\/\/localhost:30004\/books\/resources\/book\r\n[{\"books\":0}]<\/pre>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc0c8 \ucc45\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl -v \r\n&gt; -H \"Content-Type: application\/json\" \r\n&gt; -X POST -d '{\r\n&gt;   \"isbn\": \"978-1-4919-1889-0\",\r\n&gt;   \"name\": \"Minecraft Modding with Forge\",\r\n&gt;   \"cost\": 29.99\r\n&gt; }' \r\n&gt; https:\/\/localhost:30004\/books\/resources\/book\r\n*   Trying ::1...\r\n* Connected to localhost (::1) port 30004 (#0)\r\n&gt; POST \/books\/resources\/book HTTP\/1.1\r\n&gt; Host: localhost:30004\r\n&gt; User-Agent: curl\/7.43.0\r\n&gt; Accept: *\/*\r\n&gt; Content-Type: application\/json\r\n&gt; Content-Length: 92\r\n&gt; \r\n* upload completely sent off: 92 out of 92 bytes\r\n&lt; HTTP\/1.1 200 OK\r\n&lt; Connection: keep-alive\r\n&lt; X-Powered-By: Undertow\/1\r\n&lt; Server: WildFly\/10\r\n&lt; Content-Type: application\/octet-stream\r\n&lt; Content-Length: 88\r\n&lt; Date: Sat, 02 Jul 2016 01:39:49 GMT\r\n&lt; \r\n* Connection #0 to host localhost left intact\r\n{\"name\":\"Minecraft Mhttps:\/\/localhost:30004\/books\/resources\/book-1-4919-1889-0\"}<\/pre>\n<p>\uc7a5\ubd80\ub97c \ub2e4\uc2dc \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">curl https:\/\/localhost:30004\/books\/resources\/book\r\n[{\"books\":{\"name\":\"Minecraft Modding with Forge\",\"cost\":29.99,\"id\":\"1\",\"isbn\":\"978-1-4919-1889-0\"}}, {\"books\":1}]<\/pre>\n<p>\uc774 Java EE \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uc5d0\uc11c \ud655\uc778\ud558\uc138\uc694.\u00a0<a href=\"https:\/\/github.com\/arun-gupta\/oreilly-docker-book\/tree\/master\/hello-javaee\">github.com\/arun-gupta\/oreilly-docker-book\/tree\/master\/hello-javaee<\/a>.<\/p>\n<p>\uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 \ub3c4\ucee4 \ucef4\ud3ec\uc988\uc5d0\uc11c \ubd84\uc0b0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc88\ub4e4\uc744 \uc0dd\uc131\ud558\uace0 \uc774\ub97c \ub3c4\ucee4 \uc2a4\uc6dc \ubaa8\ub4dc\uc5d0\uc11c \ub3c4\ucee4 \uc2a4\ud0dd\uc73c\ub85c \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub838\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>Docker \uc11c\ube44\uc2a4 \ubc0f \uc2a4\ud0dd \ucc38\uc870<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/service_create\/\">\ub3c4\ucee4 \uc11c\ube44\uc2a4 \ub9cc\ub4e4\uae30<\/a><\/li>\n<li>\uc624\ub77c\uc77c\ub9ac\uc5d0\uc11c \ubb34\ub8cc\ub85c \uc608\uc57d\ud558\uc138\uc694:\u00a0<a href=\"https:\/\/shop.oreilly.com\/product\/0636920050872.do\">Java \uac1c\ubc1c\uc790\ub97c \uc704\ud55c Docker<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/containers\/\">\ucee8\ud14c\uc774\ub108\uc758 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a><\/li>\n<li><a href=\"https:\/\/developer.couchbase.com\/server\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uac1c\ubc1c\uc790 \ud3ec\ud138<\/a><\/li>\n<li>\ub2e4\uc74c\uc5d0 \ub300\ud574 \uc9c8\ubb38\ud558\uc138\uc694. <a href=\"https:\/\/twitter.com\/couchbasedev\">@couchbasedev<\/a> \ub610\ub294 <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">\uc2a4\ud0dd\uc624\ubc84\ud50c\ub85c\uc6b0<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>First Release Candidate of Docker 1.12 was announced over two weeks ago. Several new features are planned for this release. This blog will show\u00a0how to create a Distributed Application Bundle from Docker Compose and deploy it as Docker Stack in [&hellip;]<\/p>","protected":false},"author":58,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8933],"class_list":["post-2319","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Docker Services, Stack &amp; Distributed Application Bundle<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/docker-services-stack-distributed-application-bundle\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Services, Stack and Distributed Application Bundle\" \/>\n<meta property=\"og:description\" content=\"First Release Candidate of Docker 1.12 was announced over two weeks ago. Several new features are planned for this release. This blog will show\u00a0how to create a Distributed Application Bundle from Docker Compose and deploy it as Docker Stack in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/docker-services-stack-distributed-application-bundle\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-06T07:06:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-17T16:43:26+00:00\" \/>\n<meta name=\"author\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@arungupta\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Gupta, VP, Developer Advocacy, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/\"},\"author\":{\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f\"},\"headline\":\"Docker Services, Stack and Distributed Application Bundle\",\"datePublished\":\"2017-01-06T07:06:54+00:00\",\"dateModified\":\"2023-11-17T16:43:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/\"},\"wordCount\":1146,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/\",\"name\":\"Docker Services, Stack & Distributed Application Bundle\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-06T07:06:54+00:00\",\"dateModified\":\"2023-11-17T16:43:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker Services, Stack and Distributed Application Bundle\"}]},{\"@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\/39d8caed0f536489b6aa6e8d31ee631f\",\"name\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g\",\"caption\":\"Arun Gupta, VP, Developer Advocacy, Couchbase\"},\"description\":\"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.\",\"sameAs\":[\"https:\/\/x.com\/arungupta\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/arun-gupta\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Docker Services, Stack & Distributed Application Bundle","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\/docker-services-stack-distributed-application-bundle\/","og_locale":"ko_KR","og_type":"article","og_title":"Docker Services, Stack and Distributed Application Bundle","og_description":"First Release Candidate of Docker 1.12 was announced over two weeks ago. Several new features are planned for this release. This blog will show\u00a0how to create a Distributed Application Bundle from Docker Compose and deploy it as Docker Stack in [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/docker-services-stack-distributed-application-bundle\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-06T07:06:54+00:00","article_modified_time":"2023-11-17T16:43:26+00:00","author":"Arun Gupta, VP, Developer Advocacy, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@arungupta","twitter_misc":{"Written by":"Arun Gupta, VP, Developer Advocacy, Couchbase","Est. reading time":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/"},"author":{"name":"Arun Gupta, VP, Developer Advocacy, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/39d8caed0f536489b6aa6e8d31ee631f"},"headline":"Docker Services, Stack and Distributed Application Bundle","datePublished":"2017-01-06T07:06:54+00:00","dateModified":"2023-11-17T16:43:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/"},"wordCount":1146,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/","url":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/","name":"Docker Services, Stack & Distributed Application Bundle","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-06T07:06:54+00:00","dateModified":"2023-11-17T16:43:26+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/docker-services-stack-distributed-application-bundle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Docker Services, Stack and Distributed Application Bundle"}]},{"@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\/39d8caed0f536489b6aa6e8d31ee631f","name":"Arun Gupta, \uac1c\ubc1c\uc790 \uc9c0\uc6d0 \ubd80\ubb38 \ubd80\uc0ac\uc7a5, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8900a75409c646948fe0bd80f6240337","url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","caption":"Arun Gupta, VP, Developer Advocacy, Couchbase"},"description":"Arun Gupta is the vice president of developer advocacy at Couchbase. He has built and led developer communities for 10+ years at Sun, Oracle, and Red Hat. He has deep expertise in leading cross-functional teams to develop and execute strategy, planning and execution of content, marketing campaigns, and programs. Prior to that he led engineering teams at Sun and is a founding member of the Java EE team. Gupta has authored more than 2,000 blog posts on technology. He has extensive speaking experience in more than 40 countries on myriad topics and is a JavaOne Rock Star for three years in a row. Gupta also founded the Devoxx4Kids chapter in the US and continues to promote technology education among children. An author of several books on technology, an avid runner, a globe trotter, a Java Champion, a JUG leader, NetBeans Dream Team member, and a Docker Captain, he is easily accessible at @arungupta.","sameAs":["https:\/\/x.com\/arungupta"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/arun-gupta\/"}]}},"authors":[{"term_id":8933,"user_id":58,"is_guest":0,"slug":"arun-gupta","display_name":"Arun Gupta, VP, Developer Advocacy, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f912e10b5f39748ee4f1a0b0da6f42747f0b3a94fe7acb511791468656f5e726?s=96&d=mm&r=g","author_category":"","last_name":"Gupta","first_name":"Arun","job_title":"","user_url":"","description":"\uc544\ub8ec \uad7d\ud0c0\ub294 Couchbase\uc758 \uac1c\ubc1c\uc790 \uc9c0\uc6d0 \ub2f4\ub2f9 \ubd80\uc0ac\uc7a5\uc785\ub2c8\ub2e4. \uadf8\ub294 Sun, Oracle, Red Hat\uc5d0\uc11c 10\ub144 \uc774\uc0c1 \uac1c\ubc1c\uc790 \ucee4\ubba4\ub2c8\ud2f0\ub97c \uad6c\ucd95\ud558\uace0 \uc774\ub04c\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub294 \ucf58\ud150\uce20, \ub9c8\ucf00\ud305 \ucea0\ud398\uc778 \ubc0f \ud504\ub85c\uadf8\ub7a8\uc758 \uc804\ub7b5, \uacc4\ud68d \ubc0f \uc2e4\ud589\uc744 \uac1c\ubc1c \ubc0f \uc2e4\ud589\ud558\ub294 \uad50\ucc28 \uae30\ub2a5 \ud300\uc744 \uc774\ub044\ub294 \ub370 \uc788\uc5b4 \uae4a\uc740 \uc804\ubb38\uc131\uc744 \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8 \uc804\uc5d0\ub294 Sun\uc5d0\uc11c \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \ud300\uc744 \uc774\ub04c\uc5c8\uc73c\uba70 Java EE \ud300\uc758 \ucc3d\ub9bd \uba64\ubc84\uc785\ub2c8\ub2e4.\r\n\r\nGupta\ub294 \uae30\uc220\uc5d0 \uad00\ud55c \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc744 2,000\uac1c \uc774\uc0c1 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4. 40\uc5ec \uac1c\uad6d\uc5d0\uc11c \uc218\ub9ce\uc740 \uc8fc\uc81c\uc5d0 \ub300\ud574 \uad11\ubc94\uc704\ud55c \uac15\uc5f0 \uacbd\ud5d8\uc744 \uac00\uc9c0\uace0 \uc788\uc73c\uba70, 3\ub144 \uc5f0\uc18d JavaOne Rock Star\ub85c \uc120\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ubbf8\uad6d\uc5d0\uc11c Devoxx4Kids \uc9c0\ubd80\ub97c \uc124\ub9bd\ud558\uc5ec \uc5b4\ub9b0\uc774\ub97c \ub300\uc0c1\uc73c\ub85c \ud55c \uae30\uc220 \uad50\uc721\uc744 \uc9c0\uc18d\uc801\uc73c\ub85c \uc7a5\ub824\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uae30\uc220\uc5d0 \uad00\ud55c \uc5ec\ub7ec \uad8c\uc758 \ucc45\uc744 \uc800\uc220\ud588\uc73c\uba70, \uc5f4\ub82c\ud55c \ub9c8\ub77c\ud1a0\ub108\uc774\uc790 \uc9c0\uad6c\ub97c \ud6a1\ub2e8\ud558\ub294 \uc0ac\ub78c, Java \ucc54\ud53c\uc5b8, JUG \ub9ac\ub354, NetBeans \ub4dc\ub9bc\ud300 \uba64\ubc84, Docker \ucea1\ud2f4\uc774\uae30\ub3c4 \ud55c \uadf8\ub294 @arungupta\uc5d0\uc11c \uc27d\uac8c \ub9cc\ub098\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2319","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=2319"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2319\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2319"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}