<p>언젠가 <code class="highlighter-rouge">독커</code> (<code class="highlighter-rouge">docker</code>)를 사용해 보고 싶었습니다.</p> <p><code class="highlighter-rouge">독커</code>란 무엇일까요?</p> <p>저도 아주 자세히는 모르겠습니다만, 리눅스의 <code class="highlighter-rouge">커널 영역</code>을 제외한 여러 <code class="highlighter-rouge">배포판</code>의 사용자 영역 <code class="highlighter-rouge">이미지</code>로 시작하는, <code class="highlighter-rouge">반 가상화(?)</code> 라고 이해하고 있습니다.</p> <p><code class="highlighter-rouge">독커</code> 사용에 매우 편리한 <code class="highlighter-rouge">독커 허브</code> (<a target="_blank" href="https://hub.docker.com" target="_blank">https://hub.docker.com</a>)에 있는 여러 <code class="highlighter-rouge">official image</code>의 <code class="highlighter-rouge">Dockerfile</code>을 보면, <code class="highlighter-rouge">FROM</code>이 있고, 각 이미지들은 여러 <code class="highlighter-rouge">배포판</code>을 선택하고 있습니다.</p> <p><code class="highlighter-rouge">Arch Linux</code>는 <code class="highlighter-rouge">독커 허브</code>에 <code class="highlighter-rouge">Official Image</code>가 없기 떄문에, 저만의 <code class="highlighter-rouge">Arch Linux</code> 이미지를 만들어 보았습니다.</p> <p><a target="_blank" href="https://hub.docker.com/r/minibrary/archlinux/" target="_blank">Minibrary Docker Hub Arch Linux Image 링크</a></p> <ul><li> </li><li>제가 독커를 실행하는 환경은 <code class="highlighter-rouge">Ubuntu 16.04 LTS x64</code> 입니다.</li></ul><h2>0. 독커 설치하기</h2> <p>독커는 <code class="highlighter-rouge">apt</code>나 <code class="highlighter-rouge">yum</code> 등의 패키지 매니저로도 설치할 수 있지만, 여기서는 독커에서 제공하는 <code class="highlighter-rouge">ppa</code>를 추가하여 설치 하겠습니다.</p> <p>먼저, <code class="highlighter-rouge">curl</code>이 설치되어 있는지 확인합니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>which curl</code></pre></div> <p><code class="highlighter-rouge">curl</code>이 없다면 설치합니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo apt update && sudo apt install curl -y</code></pre></div> <p><code class="highlighter-rouge">curl</code>이 설치 되었으면, 아래 명령어로 <code class="highlighter-rouge">docker</code>를 설치합니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>curl -fsSL <a target="_blank" href="https://get.docker.com/">https://get.docker.com/</a> | sh</code></pre></div> <p>명령어를 실행하면 <code class="highlighter-rouge">sudo</code>권한을 위한 비밀번호를 묻습니다.</p> <p>비밀번호를 입력해 줍니다.</p> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-001.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-001.png" alt="" filesize="38544"></a></p> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-002.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-002.png" alt="" filesize="40587"></a></p> <h2>1. 이미지 가져오기</h2> <p>아래 명령어로 이미지를 가져옵니다. (아래 명령어에 포함된 이미지는 제가 만든 <code class="highlighter-rouge">Arch Linux</code> 입니다.)</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo docker pull minibrary/archlinux</code></pre></div> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-004.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-004.png" alt="" filesize="7551"></a></p> <p>가져온 이미지 목록을 봅니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo docker images</code></pre></div> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-005.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-005.png" alt="" filesize="7251"></a></p> <h2>2. 이미지 실행하기</h2> <p>가져온 이미지를 <code class="highlighter-rouge">bash</code>가 실행되도록 컨테이너로 실행합니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo docker run -i -t --name arch minibrary/archlinux /bin/bash</code></pre></div> <p><code class="highlighter-rouge">-i</code> 는 <code class="highlighter-rouge">interactive</code>모드로 컨테이너에 <code class="highlighter-rouge">접속(attach)</code>하지 않았어도 실행되도록 합니다.<code class="highlighter-rouge">-t</code>는 <code class="highlighter-rouge">allocate pseudo-TTY</code>로, <code class="highlighter-rouge">terminal</code> 을 만들어 줍니다.<code class="highlighter-rouge">--name arch</code>는 해당 이미지로 만드는 컨테이너에 자기가 원하는 이름(여기서는 <code class="highlighter-rouge">arch</code>)를 붙여줍니다.</p> <p>실행 하면 바로 컨테이너가 실행 되면서, 해당 이미지의 <code class="highlighter-rouge">/bin/bash</code>가 실행 됩니다.</p> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-006.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-006.png" alt="" filesize="2731"></a></p> <h2>3. Repository 업데이트</h2> <p>현재 상태의 <code class="highlighter-rouge">Arch Linux</code>는 거의 아무것도 들어있지 않습니다.</p> <p>일단 <code class="highlighter-rouge">Repository</code>를 업데이트 해 줍시다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>pacman -Syu</code></pre></div> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-007.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-007.png" alt="" filesize="5838"></a></p> <h2>4. 종료 및 재실행</h2> <p>현재 상태의 컨테이너는 <code class="highlighter-rouge">종료</code>를 하거나 <code class="highlighter-rouge">나가기</code>를 할 수 있습니다.</p> <p><code class="highlighter-rouge">exit</code>를 입력 하면 컨테이너에서 빠져 나오며, 컨테이너를 멈춥니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>exit</code></pre></div> <p>아래 명령어로 현재 실행 중인 컨테이너를 확인해 봅시다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo docker ps</code></pre></div> <p>아무것도 나오지 않습니다.</p> <p>다시 아래 명령어로 모든 컨테이너의 목록을 확인해 봅시다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo docker ps -a</code></pre></div> <p>방금 만든 <code class="highlighter-rouge">arch</code>라는 이름의 컨테이너가 표시 되고, <code class="highlighter-rouge">status</code>는 <code class="highlighter-rouge">exited</code>입니다.</p> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-008.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-008.png" alt="" filesize="13303"></a></p> <p>이제, 다시 실행 하기 위해서 아래의 명령어를 입력 합니다.</p> <p>한 번 만들어진 컨테이너는 본인이 붙인 이름으로 간단하게 전과 같은 환경으로 실행할 수 있습니다.</p> <p>아래 명령어로 컨테이너 실행 및 프로세스를 확인합니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo docker start arch && sudo docker ps</code></pre></div> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-009.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-009.png" alt="" filesize="5700"></a></p> <p>이 상태에서 다시 컨테이너에 <code class="highlighter-rouge">접속</code> (컨테이너의 <code class="highlighter-rouge">command</code>를 실행) 합니다.</p> <div class="highlighter-rouge"><pre class="highlight"><code>sudo docker attach arch</code></pre></div> <p>명령어 실행후 아무 키나 눌러 보면, 다시 <code class="highlighter-rouge">Arch Linux</code>의 <code class="highlighter-rouge">bash cli</code>로 접속한 것을 알 수 있습니다.</p> <p><a target="_blank" href="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-010.png" target="_blank"><img src="https://googledrive.com/host/0Bw2KEQNBe4nMZW91OWJNZ2lmX0k/img-2016-0616-010.png" alt="" filesize="2167"></a></p> <p>이렇게 생성한 컨테이너는, 실제 리눅스 환경처럼 사용하고, 필요가 없어지면 <code class="highlighter-rouge">컨테이너</code> 및 <code class="highlighter-rouge">이미지</code>를 삭제하는 것으로, 실제 <code class="highlighter-rouge">Host OS</code>를 <code class="highlighter-rouge">지저분</code>(?) 하지 않게 사용할 수 있습니다.</p> <p>이상으로 간단하게 <code class="highlighter-rouge">docker</code>를 이용하여 <code class="highlighter-rouge">Arch Linux</code>를 실행 하여 보았습니다.</p>
<a href="http://kr.minibrary.com">개인 블로그: 미니브러리</a>
<img src="http://kr.minibrary.com/assets/img/mini-logo-ou.png" alt="mini-logo-ou.png">
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.