{"componentChunkName":"component---src-templates-post-template-jsx","path":"/works/posts/2022-10-19--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"c92f4f00-b3ee-59cb-a773-a3d49c2adf4e","html":"<p>이번에 전사적으로 모든 CI/CD 툴이 작동하지 않는 상태에서 새로 빌드/배포를 해야하는 상황이 있었다.<br>\n이에 로컬에서 빌드한 docker 이미지를 k8s에 배포까지 수동으로 작업한 내용을 기록한다.</p>\n<h3>✔️ docker image 빌드</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">docker build -t <span class=\"token punctuation\">{</span>image명<span class=\"token punctuation\">}</span>:<span class=\"token punctuation\">{</span>tag<span class=\"token punctuation\">}</span> <span class=\"token builtin class-name\">.</span></code></pre></div>\n<h3>✔️ 컨테이너 이미지 tar 파일로 저장</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ docker save <span class=\"token punctuation\">{</span>image명<span class=\"token punctuation\">}</span>:<span class=\"token punctuation\">{</span>tag<span class=\"token punctuation\">}</span> -o dockerImage.tar</code></pre></div>\n<h3>✔️ tar 파일 서버로 전송</h3>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">scp</span> ./dockerImage.tar <span class=\"token punctuation\">{</span>계정<span class=\"token punctuation\">}</span>@<span class=\"token punctuation\">{</span>host<span class=\"token punctuation\">}</span>:<span class=\"token punctuation\">{</span>경로<span class=\"token punctuation\">}</span></code></pre></div>\n<h3>✔️ 해당 서버에서 컨테이너 이미지 로딩</h3>\n<ul>\n<li>이미지를 로딩하면 k8s에서 해당 이미지로 배포가 가능하다.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token function\">sudo</span> docker load -i dockerImage.tar</code></pre></div>\n<h3>✔️ k8s 배포시</h3>\n<ul>\n<li>deployment.yaml 파일 내에 <code class=\"language-text\">imagePullPolicy</code> 필드값을 <code class=\"language-text\">Never</code> 로 설정하여 위에 로드한 이미지를 사용하도록 한다.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">apiVersion</span><span class=\"token punctuation\">:</span> apps/v1\n<span class=\"token key atrule\">kind</span><span class=\"token punctuation\">:</span> Deployment\n<span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">template</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">spec</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">containers</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> app\n          <span class=\"token key atrule\">imagePullPolicy</span><span class=\"token punctuation\">:</span> Never\n<span class=\"token punctuation\">...</span></code></pre></div>","fields":{"tagSlugs":["/tags/docker/"],"slug":"/works/posts/2022-10-19--001"},"frontmatter":{"title":"로컬에 있는 도커 이미지 수동으로 서버에 로딩 시키기","tags":["docker"],"date":"2022-10-19","description":""}}},"pageContext":{"slug":"/works/posts/2022-10-19--001"}},"staticQueryHashes":[]}