{"componentChunkName":"component---src-templates-blog-post-js","path":"/docker/docker-이론,-개념-정리(1)/","result":{"data":{"site":{"siteMetadata":{"title":"cckn's Devlog","author":"박대성","siteUrl":"https://cckn.dev","comment":{"disqusShortName":"","utterances":"cckn/devlog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"994256f1-f067-5cef-b396-9df709f64376","excerpt":"Docker는 왜 사용할까? 공급자 입장에서는 간단하게 소프트웨어를 패키징할 수 있고 전달 가능하다\nDocker를 이용하면 소비자는 프로그램을 간단하게 설치 가능하다. Docker는 무엇일까? Docker…","html":"<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 237px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 86.0759493670886%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAC7ElEQVQ4y31TWU8TURSumIgPPoGEBxP7ZITGLfrmb+AH+OSTJgYNiakaIj4AEq1KQSiFSiktXewCpUBl62KRgqllFWjtIpSgVGg7pcvMMDOd6XhoowQUbiY3d+693/nO951zObvHDpIkCYI46pTz310Uw+FLpdFINJZKpfJ4HMcxDDsODDdgZjIUy7LBUOji4zdK2xTLZtMoBlkwDH0kGJAMTeMY+kpvrtGaH8iNxVUCmcUJgYB8PbzlXFiBQDRFHQYDEmJvIzuWadfVp83FT1q5tVIuv7FWaQyub7BMRu/2lrVZlnyBn5EYKDgAJkgSGIyO6fP368oaZJfrJBCCVy/lPhJW1LeyaOLj3FJJ98yJ5rFKpZnBMfwvGOyJRyJvhyduioauNA+Wt1t4jcZLTSaeeLz8teGG6MMt/edrCud18ZDC6gxthjMUBZnugUHPTjI5PztTKdGerNWVttuLZK5zAkOJcOisZLK0QVPSZjsj/nT6oUg7Yl1eXAisrlEkuZ82huOQ84zHf/qZorDVUiQ08SSjpzqnCjscMBc0WTjVynqjFZRnaDpPe0Az1JChyL5xu0A32DM9d6FrgiMYKXhh5tRouM/VCusUSxF47loeuQ/GcwM8ozMZTyBgc7mbTWMVot57qhGV40s4vMkyNP7n2oE6wz9FgQrS4/MverzZbDaRTGZpmkDTzC46O7+AJFMESSHxeK5PGOi5fKtxAAlswbWQ7L2+TtgiVetUvf2dau2Kz/9OpR22T7R0Kbq1BqfL3anSqvtMs1+X5Pq+VDoNNnNQDAOr5DqDNxBY/ua7XcX3BoL+76t3+NWTLjcc1bxsBIzGOKDs7dcNmDt6NOsbP2hoRCjVXksy9LLPL5YrgQEAXRqtVKMDKtgZd0z2GIywP2p33OVXg65hmyOGIPulyme+HY3G4nGgisWQaAyBBRLf+bW1BemlURTUJhLJeCKRM/sft6mcaaAivwBLAABLPNdF+N7bJg697d8qU0YKGUUiuAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"귀여운 고래를 드리겠읍니다. 1\"\n        title=\"귀여운 고래를 드리겠읍니다. 1\"\n        src=\"/static/54f02cfe5123b29e42209811152cac79/008e2/b162f2edf7a66b63f2c31d4f67af9def00d99e7ff92787567473ff1af13f333c.png\"\n        srcset=\"/static/54f02cfe5123b29e42209811152cac79/008e2/b162f2edf7a66b63f2c31d4f67af9def00d99e7ff92787567473ff1af13f333c.png 237w\"\n        sizes=\"(max-width: 237px) 100vw, 237px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"docker는-왜-사용할까\" style=\"position:relative;\"><a href=\"#docker%EB%8A%94-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C\" aria-label=\"docker는 왜 사용할까 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Docker는 왜 사용할까?</h2>\n<p>공급자 입장에서는 간단하게 소프트웨어를 패키징할 수 있고 전달 가능하다\nDocker를 이용하면 소비자는 프로그램을 간단하게 설치 가능하다.</p>\n<h2 id=\"docker는-무엇일까\" style=\"position:relative;\"><a href=\"#docker%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C\" aria-label=\"docker는 무엇일까 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Docker는 무엇일까?</h2>\n<p>Docker가 무엇인지 알기 위해서는 컨테이너를 알아야 한다.</p>\n<h2 id=\"컨테이너는-무엇일까\" style=\"position:relative;\"><a href=\"#%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C\" aria-label=\"컨테이너는 무엇일까 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>컨테이너는 무엇일까?</h2>\n<p>화물 컨테이너를 생각해보자\n화물 컨테이너를 이용해서 물건을 실으면 물건의 크기와 무게 등과 상관없이(신경 쓰지 않고) 물건을 적재할 수 있다.\n소프트웨어에서 말하는 컨테이너도 마찬가지다\n여러 소프트웨어 등을 동일한 규격으로 묶어 실제 사용자가 최대한 신경을 덜 쓰고 사용할 수 있도록 만든 것이 컨테이너이다.</p>\n<h2 id=\"image는-뭐고-container는-또-뭐야\" style=\"position:relative;\"><a href=\"#image%EB%8A%94-%EB%AD%90%EA%B3%A0-container%EB%8A%94-%EB%98%90-%EB%AD%90%EC%95%BC\" aria-label=\"image는 뭐고 container는 또 뭐야 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Image는 뭐고 Container는 또 뭐야?</h2>\n<p>이미지와 컨테이너는 무엇일까??\n이미지는 소프트웨어 구동에 필요한 의존(Dependency)과 명세를 담고 있다.\n컨테이너는 이미지를 통해 만들어진다.\n개발을 해본 사람이라면 Class와 Instance의 차이를 알 것이다.\n일반적인 경우에는 Class를 직접 사용하지 않는다.\n해당 Class를 기반으로 한 Instance를 생성하여 사용한다.\n예를 들면 아래와 같다.\n// Class 생성</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">Class <span class=\"token function\">Car</span><span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token operator\">...</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n  func <span class=\"token function\">drive</span><span class=\"token punctuation\">(</span><span class=\"token parameter\"><span class=\"token operator\">...</span></span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token operator\">...</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token operator\">...</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// Instance 생성</span>\n  <span class=\"token keyword\">var</span> k5 <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Car</span><span class=\"token punctuation\">(</span><span class=\"token operator\">...</span><span class=\"token punctuation\">)</span>\n\n  <span class=\"token comment\">// Instance 사용</span>\n  k5<span class=\"token punctuation\">.</span><span class=\"token function\">drive</span><span class=\"token punctuation\">(</span><span class=\"token operator\">...</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>위의 예제는 개념만 정리해둔 pseudo 코드이다.\n위와 같은 예제에서</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">Class <span class=\"token operator\">==</span> Image\nInstance <span class=\"token operator\">==</span> Container</code></pre></div>\n<p>정도로 이해하면 쉽다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 837px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 72.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABoElEQVQoz21TSU7DQBDMv3gCBx6E+AUSB448gBNILE/gEHJCIIEjgk28BI9n8yy2KU87jgkpRVZ39fRS05NZ27be+yaAjK7r2oApCYDpAtotZsaYqqrEFmTjxGhzwaWQsJVSzV/MpJTIx+ksy7TWqJfnOc5FUWStVUrGcVzXxjmXpilCWZoZa6n/DCc451orwbkMQCZiKIS2cBEFA7uua/BQsRsbPjojgCp1wBiDbSY4oBkdSA++MshmjEFPWZakGW6vPAANMP8Bzev1GjZpRsXlcgkeRZMkUVo773EpRVHga0fNqESqSHDQr0kLaR556kHDD2PTnlHCBvRbxYZDDCTcrsXmhwTa9m5sqoGZIZJ6Nsh11oWbQ1YuDX6VMs3/CxuT6Xoqxn6Evnt+nX+mFXan5NljdHz1dnR6vWF8mjmsCgPgJSCZC2GVnMfFycXN2f0iE6r17iUpzx8Wl7dP27aTziRjtVrhSWHy/tqLzUecvn99ozEeANvkqswUKwZR0+dJNYgdCja+97xrwl+i36xvsGDf84c0j+xeeI/ci/4CdW1ilb7Ny5QAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 3\"\n        title=\"picture 3\"\n        src=\"/static/ca53f642690231ea6c1ac183ff028371/ddc81/caa5ada4759d0a02b12971b712b8849dfbf3cb09d13169a9fc0475c210b4a335.png\"\n        srcset=\"/static/ca53f642690231ea6c1ac183ff028371/5a46d/caa5ada4759d0a02b12971b712b8849dfbf3cb09d13169a9fc0475c210b4a335.png 300w,\n/static/ca53f642690231ea6c1ac183ff028371/0a47e/caa5ada4759d0a02b12971b712b8849dfbf3cb09d13169a9fc0475c210b4a335.png 600w,\n/static/ca53f642690231ea6c1ac183ff028371/ddc81/caa5ada4759d0a02b12971b712b8849dfbf3cb09d13169a9fc0475c210b4a335.png 837w\"\n        sizes=\"(max-width: 837px) 100vw, 837px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Dockerfile은 Image를 만들기 위한 명세이고, Image는 Container를 만들기 위한 본이다.\nContainer는 사용하기 위해 Image로부터 만들어진 객체이다</p>\n<h2 id=\"docker-사용-시나리오\" style=\"position:relative;\"><a href=\"#docker-%EC%82%AC%EC%9A%A9-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4\" aria-label=\"docker 사용 시나리오 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Docker 사용 시나리오</h2>\n<p>hello-world이미지가 없는 경우 registy(DockerHub)에서 이미지를 다운 받는다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 723px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 17.333333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAnUlEQVQI1xXMbQuDIBiF4T4blDlhRWlWvjw+lq2xojEY7P//qRlcHO5PJ/tYu2n9svYAOD0cMO3OnIi7te8QXNMkktKakCbP015ByJ2QPs+zb4wOEbx33vsrMMyzVEr0vRqGG+eM84qxoiyTsqpoQmnBWHrMfsuCWq8AT8QHwB7jhhidC9MUtJ6NidauzoFSY9tqIYyUuutGIZa6/gNKKxcKRvyBcAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 5\"\n        title=\"picture 5\"\n        src=\"/static/77ea931237e0a1b1788b54727d02160f/c67d4/5760633012eddee6570a7c22a7d8dc9a83aaab41b998d1a4302640603fccdc09.png\"\n        srcset=\"/static/77ea931237e0a1b1788b54727d02160f/5a46d/5760633012eddee6570a7c22a7d8dc9a83aaab41b998d1a4302640603fccdc09.png 300w,\n/static/77ea931237e0a1b1788b54727d02160f/0a47e/5760633012eddee6570a7c22a7d8dc9a83aaab41b998d1a4302640603fccdc09.png 600w,\n/static/77ea931237e0a1b1788b54727d02160f/c67d4/5760633012eddee6570a7c22a7d8dc9a83aaab41b998d1a4302640603fccdc09.png 723w\"\n        sizes=\"(max-width: 723px) 100vw, 723px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>hello-world이미지가 있는 경우 이미지를 다운 받지 않고 컨테이너를 생성한다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 667px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 13.333333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAZUlEQVQI13WOOw7AIAxD2duyMgDhEySQ4P7n6xOMVT1Ejp2PTc5ZRFJKIYTeY9MQN9BLKVj3PwxrTNRanXPWPgDVbnbqtYH4JWatNeccY3T+RjlBiNJaU1VOQ7C890QjCy2VMdwXq28RBT0I3JMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 6\"\n        title=\"picture 6\"\n        src=\"/static/e0af4630fe69cb042e49385e1bc5357f/295bd/43c5e9481a6a33668cea657c7fcf618281ad991dab63f6936286272f8fbfdcec.png\"\n        srcset=\"/static/e0af4630fe69cb042e49385e1bc5357f/5a46d/43c5e9481a6a33668cea657c7fcf618281ad991dab63f6936286272f8fbfdcec.png 300w,\n/static/e0af4630fe69cb042e49385e1bc5357f/0a47e/43c5e9481a6a33668cea657c7fcf618281ad991dab63f6936286272f8fbfdcec.png 600w,\n/static/e0af4630fe69cb042e49385e1bc5357f/295bd/43c5e9481a6a33668cea657c7fcf618281ad991dab63f6936286272f8fbfdcec.png 667w\"\n        sizes=\"(max-width: 667px) 100vw, 667px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"docker와-기존-가상화-기술vm의-차이\" style=\"position:relative;\"><a href=\"#docker%EC%99%80-%EA%B8%B0%EC%A1%B4-%EA%B0%80%EC%83%81%ED%99%94-%EA%B8%B0%EC%88%A0vm%EC%9D%98-%EC%B0%A8%EC%9D%B4\" aria-label=\"docker와 기존 가상화 기술vm의 차이 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Docker와 기존 가상화 기술(VM)의 차이</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 854px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 63%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABaklEQVQoz42Si3KDIBBF+f9vTBMNPkAF0aDRmJoeoEk7nWmndxzdvbt3H6B4/Bv7vv9gxCNS3vvD2+F4fNu27TexPEvb99+riP2JdV2XZXm5KXx/D7jfw3dZ19ttSy4gR/w96jRNl4uPzwV7mqdxHC8RNBPGdM45a23XdcYYG2Cw/OQRD8MA2UcQSG7C9TqLrmt757RWbdui11qbLmAYB8RN07i+513XNUUpURRl6kQhQYBGVVW1ERgEgsY5xLWqYWqleJdlpZUu+UQwv8iyrCoJlFLKKvIYeX52LhwsfJadsjzHyPO8KIoYzY6nU+icplVKyYjkvjo3EWkdogyPTQ753K7wEVAsI2XBPrgcJlMhpgQ2jDWGtkrr5MLP8yySw5vRWSnciveMlMTUwuCOBudYlilSM04OUjg3UJJlz1KyWB2BmHKpszU2JqRDCQn0/xTzV5HhBkq78YklAvGV25znGP9KoC48P8kH7FjgLHQfanwAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 7\"\n        title=\"picture 7\"\n        src=\"/static/9ac30b974d91ea4bf9ff3feda13c61e6/c3fd4/3fff93f225744a03fdf6ac437277dab0f020227db8916014e1c38607703e0e17.png\"\n        srcset=\"/static/9ac30b974d91ea4bf9ff3feda13c61e6/5a46d/3fff93f225744a03fdf6ac437277dab0f020227db8916014e1c38607703e0e17.png 300w,\n/static/9ac30b974d91ea4bf9ff3feda13c61e6/0a47e/3fff93f225744a03fdf6ac437277dab0f020227db8916014e1c38607703e0e17.png 600w,\n/static/9ac30b974d91ea4bf9ff3feda13c61e6/c3fd4/3fff93f225744a03fdf6ac437277dab0f020227db8916014e1c38607703e0e17.png 854w\"\n        sizes=\"(max-width: 854px) 100vw, 854px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h3 id=\"공통점\" style=\"position:relative;\"><a href=\"#%EA%B3%B5%ED%86%B5%EC%A0%90\" aria-label=\"공통점 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>공통점</h3>\n<p>각 컨테이너/VM이 격리되어 있다.</p>\n<h3 id=\"차이점\" style=\"position:relative;\"><a href=\"#%EC%B0%A8%EC%9D%B4%EC%A0%90\" aria-label=\"차이점 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>차이점</h3>\n<p>VM은 Hyper Visor 및 GuestOS가 포함되어 있어 더 무겁고 느리다.\nVM은 각 VM간 완전한 격리가 이루어진다\nUse GuestOS Kernel\nDocker는 불완전한 격리가 이루어진다\nUse HostOS Kernel</p>\n<h2 id=\"docker가-불완전한-격리를-수행하는-방법\" style=\"position:relative;\"><a href=\"#docker%EA%B0%80-%EB%B6%88%EC%99%84%EC%A0%84%ED%95%9C-%EA%B2%A9%EB%A6%AC%EB%A5%BC-%EC%88%98%ED%96%89%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95\" aria-label=\"docker가 불완전한 격리를 수행하는 방법 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Docker가 (불완전한) 격리를 수행하는 방법</h2>\n<p>Use Cgroup &#x26; Namespace of linux\nCgroup - CPU, Mem, network, I/O 등의 자원을 제한함\nNamespace - 프로세스를 격리하는 기능\n실제 격리는 이루어지지 않는다.</p>\n<h2 id=\"이미지로-컨테이너-만들기\" style=\"position:relative;\"><a href=\"#%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A1%9C-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EB%A7%8C%EB%93%A4%EA%B8%B0\" aria-label=\"이미지로 컨테이너 만들기 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>이미지로 컨테이너 만들기</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 244px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 107.37704918032787%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB50lEQVQ4y51T2W6jQBD0/3/USlGSh7wkstfOOgyGAcxwYzCXuVPQTkikcRRtyczZNd1d3V6N4+i6rmEYtm1bC44/wDTNOI5BXOHTNK0sy67rhr7HdhgnYNvKgPOqqnRdv5LhqGkaLALftYUThb7wPDqRAk+AciUjDDLV2b+X9fbp4e7P/WNWlFMUwyAlg7KQsf80HWZIfdK5nPxLfCND6r7voRljjDSHpF9Ft6bttOCcI0FoBspCxpgkCe6wwEM97rseQfYoAE1zLrBM05QWCxn78/kcBmEUBeyN2U5gGaigPnk3Tc41lTFUKQgCmMnJvu/nRaYqbM+4OPLt39fn55fterN/2283G8QiJ1PY8AULZNW2Td00iP6zMfDhHHlJwsZ1XdeIEa3qOAJwaBIfkxDzldPN+EaGRtR0ZEFUx/l4gdauS70oV5s6FhHOas/jFHpXT4m0w/ij2tAjiiKD67phWlznpmXgPW4kUWgfzTjJYJCmN9QOwzA5JdBWUVVhauvd7nW3O2iaL46KosRJHt4q1el0UlX1cqnyPEe3FUVJKIr8nGU4vFQVyoHsINDSnigAqY0GRGCe57neAh8/nwYfcpLa1IsTGZzD4QAlF3FvAz7hHz6uZMRM77W/AFnSf3M1/heI/A6gGaSDmIHbcAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 8\"\n        title=\"picture 8\"\n        src=\"/static/b4bfc2e4144a1d3cbd8c9eb33fe77b6e/0cba8/7ae61afe5797c8a33b18ab12a7a9136c70edbd453794365fbceaac8e7ce948d9.png\"\n        srcset=\"/static/b4bfc2e4144a1d3cbd8c9eb33fe77b6e/0cba8/7ae61afe5797c8a33b18ab12a7a9136c70edbd453794365fbceaac8e7ce948d9.png 244w\"\n        sizes=\"(max-width: 244px) 100vw, 244px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>이미지가 컨테이너로 만들어지는 과정</p>\n<p>이미지는 file snapshot과 Command List를 가지고 있다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1007px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 51.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA5ElEQVQoz32R2w6DIBBE+f/PbB9MQbyAiqDFnrJJYyvpPBDFncuO6nnBtm3ee9OalLZ931NKMcZnDernPefM6DRNS0EIASFuuK+Qc8GHCbquc85hyEMIK/x1XXMNCuFhGEIBQ0iMBZjzibPve07yxwuUTMhi8NGDyWX4wuK9izFRRyqQXhS2xGuaxhiDCeZowZ/nmZ053+ol3VKiCXASct9Z27attVYCa63H0UG832/l4S1xHEelMNygYQsfMSJJC+ChNaEkRb1tWUCWoRUciAST8ESAJuX9+1VnoLKcAB85RK+TLwprRNnQC2n2AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 9\"\n        title=\"picture 9\"\n        src=\"/static/36c2a3d84755353e803551c443cd9957/54bf4/37cef9a58e88ff324746c65abfc5898c3a720b2a5518c4762b07e4211b5e29a0.png\"\n        srcset=\"/static/36c2a3d84755353e803551c443cd9957/5a46d/37cef9a58e88ff324746c65abfc5898c3a720b2a5518c4762b07e4211b5e29a0.png 300w,\n/static/36c2a3d84755353e803551c443cd9957/0a47e/37cef9a58e88ff324746c65abfc5898c3a720b2a5518c4762b07e4211b5e29a0.png 600w,\n/static/36c2a3d84755353e803551c443cd9957/54bf4/37cef9a58e88ff324746c65abfc5898c3a720b2a5518c4762b07e4211b5e29a0.png 1007w\"\n        sizes=\"(max-width: 1007px) 100vw, 1007px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>해당 이미지로 컨테이너를 생성하고 File Snapshot을 HDD에 적재한다.\n프로세스 영역에 Command List를 이동한다.\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 728px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 71.33333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABIUlEQVQoz42TyZKDMBBD8/+/yBUo9sV4wTCGediEAZKaRAeXQqyWuhse0zRZa0Uv2q6d59k59+MxjiOnO2FZFnfFY/Ko6yrPc2MMhZDxBP5ZzI1hGLTWEOuBmJ9d1y1XrOt6e/IgKmJOrVRVVU3TIOYPxDefN87IpJScoU/7bDU4B82rc+CbuG3bNE2xTZIky7KyLHMPipJfepAunAeYy58zxULnq0cIIgfplvUVW5ta7z0rpahEBAqFmUGEEMTRxoxXcIH7mxiHvu+LouCMoiiOY7qt6prwXJqn+aw5831gOFPCaJ0gTWIEYdr/rAq+75l4OGNFSOYEh3y7ZwL76dmiyCGhJRZ+W+z7PQsP5V8SDCGU+Nb5GEb4SI6pfHzDfgEz1S+hrGQFLQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 10\"\n        title=\"picture 10\"\n        src=\"/static/707bc451ee8071b22f0bfbf1eaa4f98f/cecac/dd94cc70f440cf7bf9fb2dd470f83c4a61247babe844941781c132c13c802716.png\"\n        srcset=\"/static/707bc451ee8071b22f0bfbf1eaa4f98f/5a46d/dd94cc70f440cf7bf9fb2dd470f83c4a61247babe844941781c132c13c802716.png 300w,\n/static/707bc451ee8071b22f0bfbf1eaa4f98f/0a47e/dd94cc70f440cf7bf9fb2dd470f83c4a61247babe844941781c132c13c802716.png 600w,\n/static/707bc451ee8071b22f0bfbf1eaa4f98f/cecac/dd94cc70f440cf7bf9fb2dd470f83c4a61247babe844941781c132c13c802716.png 728w\"\n        sizes=\"(max-width: 728px) 100vw, 728px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>CommandList를 실행한다.</p>\n<h2 id=\"cgroup과-namespace를-windowsmacos에서도-사용할-수-있는-이유\" style=\"position:relative;\"><a href=\"#cgroup%EA%B3%BC-namespace%EB%A5%BC-windowsmacos%EC%97%90%EC%84%9C%EB%8F%84-%EC%82%AC%EC%9A%A9%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%9D%B4%EC%9C%A0\" aria-label=\"cgroup과 namespace를 windowsmacos에서도 사용할 수 있는 이유 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Cgroup과 namespace를 Windows/macOS에서도 사용할 수 있는 이유?</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 596px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 84.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABzElEQVQ4y22T7XaCMBBEef8nbK2SBhILIfIhBBUUe5NUW0+ZH3FJdnZmNzFpmubLYy8zWVXVMAx93x//oA/oXtG2LWvCT1mWWu8BSdM0nc9n1usDl8uFz/s/oJoURQFN5UpKqZRCCn2CNN19AvlJEgL/+WwmODamZNVKmapyg6sDtNbUxZRzDofor5CRxfJ1ntF0o6NnLFhryWaHT7rI83xdeR/Ah9Ze+b4spB7qmh2VZ9aGQKl1ch6AVPRpjMmyDLcE/g72miPIWJjnmflRhQBfh8MhIRV7VGL8p9OJgOwYOOevLYqMzllb+QlKudl8MBQ/bWTRobHtdos4NMo1TU1t8nQwjAWyu2NnLQ3VVEfPkyFAHscRb/GR4KdCpTK73Q4+m3CwMAY451dK/FwVB88nMU2X2+1WmXLzscGjSNO393cI1+scu41AwCtTWwjBGvvBCBbi8MLAPHQADcoHSGai/nm+PDo/iIZGirLALvGxH7q2M0U59AMJy7L8XhV5z9cPslAYEZEKEbzkSvlXKgSZffjbxH8OY0uYh4tDCJgCGDWNkcTR9AA38kxj398zc1v+4PYAxjLJC7MEcWd5BcSkCWjXEO2tHkHh9Bsg7L4ejEjC2gAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 11\"\n        title=\"picture 11\"\n        src=\"/static/12b25271cc79bec74f92f214d844066c/699b7/dc7b480b6f7ba57b5d55444b20a6950ea7eb20255e0843f66b3b374c28c917be.png\"\n        srcset=\"/static/12b25271cc79bec74f92f214d844066c/5a46d/dc7b480b6f7ba57b5d55444b20a6950ea7eb20255e0843f66b3b374c28c917be.png 300w,\n/static/12b25271cc79bec74f92f214d844066c/699b7/dc7b480b6f7ba57b5d55444b20a6950ea7eb20255e0843f66b3b374c28c917be.png 596w\"\n        sizes=\"(max-width: 596px) 100vw, 596px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Linux가 아닌 OS에 Docker를 설치하는 경우 Docker를 바로 설치하는 게 아니고 Linux VM이 설치되고 그 위에 Docker Engine 및 Container들이 설치된다.\nContainer들은 Linux Kernel을 사용하기 때문에 Cgroup / namespace를 사용할 수 있다.</p>\n<h2 id=\"docker-run-img-cmd\" style=\"position:relative;\"><a href=\"#docker-run-img-cmd\" aria-label=\"docker run img cmd permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>docker run <img> <CMD></h2>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># 1</span>\nrun hello-world\n\n<span class=\"token comment\"># 2</span>\nrun alpine\n\n<span class=\"token comment\"># 3</span>\nrun hello-world <span class=\"token function\">ls</span>\n\n<span class=\"token comment\"># 4</span>\nrun alpine <span class=\"token function\">ls</span></code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 9.333333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAZUlEQVQI1x2MSwrAIBBDu9UZUFFXSqX+WguCeP/DNTS7fF6OtZbWutbqnBNCvPfTr8LE7Ze1FlVKKYQQY/TeK6UwK6X03o+9tzEGZoxBTHdt+UxMlHOec+IRI/CwuJBSMjNgJAA/LJMNWob1OzMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 12\"\n        title=\"picture 12\"\n        src=\"/static/61e0212ee84e4d41283eabe4cbff580d/c1b63/cd2beb17506a61bc8c94d33a45c795f4ece342ad2f07d999884410db4a89e4e9.png\"\n        srcset=\"/static/61e0212ee84e4d41283eabe4cbff580d/5a46d/cd2beb17506a61bc8c94d33a45c795f4ece342ad2f07d999884410db4a89e4e9.png 300w,\n/static/61e0212ee84e4d41283eabe4cbff580d/0a47e/cd2beb17506a61bc8c94d33a45c795f4ece342ad2f07d999884410db4a89e4e9.png 600w,\n/static/61e0212ee84e4d41283eabe4cbff580d/c1b63/cd2beb17506a61bc8c94d33a45c795f4ece342ad2f07d999884410db4a89e4e9.png 1200w,\n/static/61e0212ee84e4d41283eabe4cbff580d/21b4d/cd2beb17506a61bc8c94d33a45c795f4ece342ad2f07d999884410db4a89e4e9.png 1280w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">docker</span> run <span class=\"token operator\">&lt;</span>img<span class=\"token operator\">></span> <span class=\"token operator\">&lt;</span>CMD<span class=\"token operator\">></span></code></pre></div>\n<p>CMD 필드를 채워 넣으면\n기존 이미지에 있던 CommandList를 무시하고 CMD를 실행한다.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 896px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 44.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABTklEQVQoz21RW07DMBDs/W/BBVDFBUAgFST44KGWR1polDROYrt5Oo43jsOQqIiKjpRotbvj3ZmdDcPgnFNK1YCqrbXI9H1fH4DaQDScwmwiG2OSJGnbFrSJTERFnmdZNljrxuQJMkbVVdUaE8exbrRu8OHXkDFgSiEMEbbCW9Y5a/seoxzmjWRkd2GYpslmvd5FO8ZYURT7PGcpD6Po099yKXcsbrUe+s5ZMro5mlyWZVVVvu9jT1Ur3RqSXAdb8fEWvy6bwCcWpqV+Fvoxyq9WXy+8fkprZeys6zohRMSY53lBECBWWlPoy4e7YHG9vblM7m/N+9JLi/mmOF9GZ4vVhSfn3l429EOGpTCMc96MgvUoGpqrqoRj0IWGycvOWvSMHh80QyT6MRPLI8DZIAPPQA4XEobtsww9HRGq1NHRqfoR083+Bm7Eb/U/vgGI0gJnRIhy4gAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 13\"\n        title=\"picture 13\"\n        src=\"/static/008597b5e4e8890884047bcd2db41121/4c42d/b0698869a6e797aeaf0c10a64f96fc84ea41ade39542a50b98d69f5d058ff54b.png\"\n        srcset=\"/static/008597b5e4e8890884047bcd2db41121/5a46d/b0698869a6e797aeaf0c10a64f96fc84ea41ade39542a50b98d69f5d058ff54b.png 300w,\n/static/008597b5e4e8890884047bcd2db41121/0a47e/b0698869a6e797aeaf0c10a64f96fc84ea41ade39542a50b98d69f5d058ff54b.png 600w,\n/static/008597b5e4e8890884047bcd2db41121/4c42d/b0698869a6e797aeaf0c10a64f96fc84ea41ade39542a50b98d69f5d058ff54b.png 896w\"\n        sizes=\"(max-width: 896px) 100vw, 896px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>","frontmatter":{"title":"Docker 이론, 개념 정리(1)","date":"November 23, 2020"}}},"pageContext":{"slug":"/docker/docker-이론,-개념-정리(1)/","previous":{"fields":{"slug":"/linux/pm2를-이용한-프로그램-실행-및-시작프로그램-등록/"},"frontmatter":{"title":"PM2를 이용한 프로그램 실행 및 시작프로그램 등록","category":"linux","draft":false}},"next":{"fields":{"slug":"/docker/docker-컨테이너의-생명-주기/"},"frontmatter":{"title":"Docker 컨테이너의 생명 주기","category":"docker","draft":false}}}},"staticQueryHashes":["3128451518","521680639"]}