{"data":{"site":{"siteMetadata":{"siteUrl":"https://sat10am.dev","shortname":"sat10am"}},"post":{"id":"Post_2-markdown","title":"Docker Private Registry 구축하기","view":0,"slug":"/posts/docker-private-registry","publishAt":"2018.10.20","tags":[{"name":"docker"},{"name":"linux"}],"childMarkdownRemark":{"html":"<p>기본적으로 Docker는 Docker Hub라는 공식 Registry를 통해서 이미지를 Push, Pull 할 수 있다.\n하지만 공개적으로 노출시킬 이미지가 아니라면 Private Registry를 별도로 구축해서 이용해야한다.\n이번 포스팅에선 Docker Private Registry를 구축하는 방법에 대해 작성해보려 한다.\nDocker Registry 를 구축하기 위해선 SSL 인증서가 필요하다.\n만약 인증서를 구매하지 않고 사용하고 싶다면 <strong>insecure-registry</strong> 를 등록하거나 아니면 <strong>Let's Encrypt</strong> 와 같은 무료 TLS솔루션을 찾아보기 바란다.\n먼저 Docker Registry에 있는 docker-compose 파일을 이용하도록 한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\">    <span class=\"token key atrule\">registry</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">restart</span><span class=\"token punctuation\">:</span> always\n      <span class=\"token key atrule\">image</span><span class=\"token punctuation\">:</span> registry<span class=\"token punctuation\">:</span><span class=\"token number\">2</span>\n      <span class=\"token key atrule\">ports</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> 5000<span class=\"token punctuation\">:</span><span class=\"token number\">5000</span>\n      <span class=\"token key atrule\">environment</span><span class=\"token punctuation\">:</span>\n        <span class=\"token key atrule\">REGISTRY_HTTP_TLS_CERTIFICATE</span><span class=\"token punctuation\">:</span> /certs/domain.crt\n        <span class=\"token key atrule\">REGISTRY_HTTP_TLS_KEY</span><span class=\"token punctuation\">:</span> /certs/domain.key\n        <span class=\"token key atrule\">REGISTRY_AUTH</span><span class=\"token punctuation\">:</span> htpasswd\n        <span class=\"token key atrule\">REGISTRY_AUTH_HTPASSWD_PATH</span><span class=\"token punctuation\">:</span> /auth/htpasswd\n        <span class=\"token key atrule\">REGISTRY_AUTH_HTPASSWD_REALM</span><span class=\"token punctuation\">:</span> Registry Realm\n      <span class=\"token key atrule\">volumes</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> /path/data<span class=\"token punctuation\">:</span>/var/lib/registry\n        <span class=\"token punctuation\">-</span> /path/certs<span class=\"token punctuation\">:</span>/certs\n        <span class=\"token punctuation\">-</span> /path/auth<span class=\"token punctuation\">:</span>/auth</code></pre></div>\n<ul>\n<li>cert - SSL인증서가 들어갈 디렉토리</li>\n<li>auth - htpasswd 계정 정보를 넣어줄 디렉토리</li>\n</ul>\n<p>인증서가 준비되었다면 auth/htpasswd 파일을 만들어보자.\nhtpasswd관련 패키지가 설치되어있지 않다면 설치하고 아래 명령을 실행하도록 한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">sudo</span> htpasswd -B <span class=\"token operator\">&lt;</span>파일경로<span class=\"token operator\">></span> <span class=\"token operator\">&lt;</span>만들계정<span class=\"token operator\">></span></code></pre></div>\n<p>명령어를 실행하면 패스워드를 물어보고 계정이 만들어진다.</p>\n<p>이제 잘되는지 확인하는 일만 남았다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    docker-compose up -d</code></pre></div>\n<p>docker-compose 를 통해서 container를 데몬으로 띄운다.\n접속은 브라우저나 curl 원하는 형태로 확인이 가능하다.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    <span class=\"token function\">curl</span> -u <span class=\"token operator\">&lt;</span>계정명<span class=\"token operator\">></span>:<span class=\"token operator\">&lt;</span>패스워드<span class=\"token operator\">></span> https://<span class=\"token punctuation\">..</span><span class=\"token punctuation\">..</span></code></pre></div>\n<p>정상적으로 Push, Pull이 되는지 확인해보자</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">    docker pull hello-world\n    docker tag hello-world <span class=\"token operator\">&lt;</span>Registry URL<span class=\"token operator\">></span>/hello-wrold\n    docker login <span class=\"token operator\">&lt;</span>Registry URL<span class=\"token operator\">></span>\n    docker push <span class=\"token operator\">&lt;</span>Registry URL<span class=\"token operator\">></span> hello-world</code></pre></div>\n<p>Push가 되었다면 <code class=\"language-text\">&lt;Registry URL&gt;/v2/_catalog</code> 로 접속해서 Repositories 목록에서 확인할 수 있다.</p>"},"author":{"username":"y0c","intro":"Web Developer & Student","email":"holnet1026@gmail.com","github":"https://github.com/y0c","profile":{"url":"/uploads/28f8f2ee1ab84c0b86610b60402bc4ee.jpeg"}},"thumbnail":{"childImageSharp":{"fluid":{"aspectRatio":1.5486725663716814,"src":"/static/de55df013baab796b65e4949d327fe5f/6a66a/c3dcc4e9cbb157ef96d2544fe6d69961.png","srcSet":"/static/de55df013baab796b65e4949d327fe5f/01d6e/c3dcc4e9cbb157ef96d2544fe6d69961.png 175w,\n/static/de55df013baab796b65e4949d327fe5f/6a66a/c3dcc4e9cbb157ef96d2544fe6d69961.png 313w","sizes":"(max-width: 313px) 100vw, 313px"}}}},"previous":{"title":"Jenkins x Docker Tomcat War 배포하기","slug":"/posts/jenkins-docker"},"next":{"title":"CentOS 7 Mail Server 구축하기 Postfix + Dovecot","slug":"/posts/centos7-mail-server"}},"pageContext":{"isCreatedByStatefulCreatePages":false,"id":"Post_2-markdown","hasPrevious":true,"hasNext":true,"previousId":"Post_3-markdown","nextId":"Post_1-markdown"}}