[Docker] 설치 및 사용법

[Docker] 설치 및 사용법

안녕하세요? 정리하는 개발자 워니즈 입니다. 오늘 소개해드릴 내용은 제가 가장 관심이 있고, 흥미를 갖는 부분인데요.
바로 docker에 대해서 소개를 드리려 합니다. 필자가 운영하는 프로젝트에서는 아직 docker를 도입해서 사용하고 있지는 않지만, 개인적으로 docker로 jenkins와 redmine등을 띄워서 사용하고 있습니다.

도커를 사용하면서 느낀거는 격리된 환경에서 VM장비에 영향을 주지않고, 뭐든 손쉽게 할수 있다는 장점이 있는데요.
공부 할 수 있는 문서를 찾다보니, 아래의 깃헙 주소를 알게 되었습니다.

도커 학습

1. 도커의 역사


도커는 2013년 3월 산타클라라에서 열린 Pycon Conference에서 dotCloud의 창업자인 Solomon Hykes가 The future of Linux Containers 라는 세션을 발표하면서 처음 세상에 알려졌습니다.

이 발표 이후 도커가 인기를 얻으면서 2013년 10월 아예 회사이름을 도커(Docker Inc.)로 바꾸고 2014년 6월 도커 1.0을 발표합니다. 2014년 8월 도커에 집중하기 위해 dotCloud 플랫폼을 매각하고 2015년 4월 $95M(약 1,100억원) 투자를 유치한 후 계속해서 빠르게 성장하고 있습니다. (현재까지 총 투자액은 $180M이며 2016년 6월 MS에서 $4B/₩4조에 인수하려 했다는 기사가 있습니다.)

2. 도커란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.

서버에서 이야기하는 컨테이너도 이와 비슷한데 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있습니다.

  • 컨테이너

  • 가상화 vs 반가상화

하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 마치 가벼운 VMVirtual Machine을 사용하는 느낌을 줍니다. 실행중인 컨테이너에 접속하여 명령어를 입력할 수 있고 apt-get이나 yum으로 패키지를 설치할 수 있으며 사용자도 추가하고 여러개의 프로세스를 백그라운드로 실행할 수도 있습니다. CPU나 메모리 사용량을 제한할 수 있고 호스트의 특정 포트와 연결하거나 호스트의 특정 디렉토리를 내부 디렉토리인 것처럼 사용할 수도 있습니다.

  • 이미지

3. 도커 설치

자 이제 본격적으로 도커 설치에 대해서 알아보겠습니다. 필자가 사용하는 리눅스는 레드헷 계열이기 때문에 그에 맞춰서 설치를 해보도록 하겠습니다.

  1. Docker CE Rpository on RHEL

  2. Install the latest version of Docker CE on RHEL

  3. Docker start

4. 도커 사용법

도커를 설치하면 본격적으로 도커의 기본 이미지를 한개 띄워 볼수 있다.

  • 실행 명령어

  • 자주 사용하는 옵션

옵션 설명
-d 백그라운드 실행
-p 포트 연결(포워딩)
-v 볼륨 연결(마운트)
-e 환경변수
-name 컨테이너 이름
-rm 컨테이너 자동 제거
-it 터미널 입력을 위한 옵션
-link 컨테이너 연결
  • 간단한 실행

    필자가 운영하는 곳은 grafana 대쉬보드를 잘 활용하고 있기에 해당 예제를 보여줍니다.

  • 프로세스 확인

    run명령어를 사용하면 사용할 이미지가 저장되어 있는지 확인하고 없다면 다운로드(pull)를 한 후 컨테이너를 생성(create)하고 시작(start) 합니다.

  • 컨테이너 내부 접속

    컨테이너 내부에 들어가기 위해 bash 쉘을 실행하고 키보드 입력을 위해 -it 옵션을 줍니다.

    exit로 bash 쉘을 종료하면 컨테이너도 같이 종료됩니다.

  • 컨테이너 중지

    옵션은 특별한게 없고 실행중인 컨테이너를 하나 또는 여러개 (띄어쓰기로 구분) 중지할 수 있습니다.

    앞에서 실행한 tensorflow 컨테이너는 더이상 필요가 없으니 중지해 보겠습니다. 중지하려면 컨테이너의 ID 또는 이름을 입력하면 됩니다. tensorflow 컨테이너의 ID를 ps명령을 통해 확인하고 중지해 봅니다.

  • 컨테이너 제거

    종료 명령어도 옵션은 특별한게 없습니다. 종료된 컨테이너를 하나 또는 여러개 삭제할 수 있습니다. 종료된 ubuntu 컨테이너와 tensorflow 컨테이너를 삭제해보겠습니다.

  • 이미지 목록 확인

  • 이미지 다운로드

    run명령어를 입력하면 이미지가 없을 때 자동으로 다운받으니 pull명령어를 언제 쓰는지 궁금할 수 있는데 pull은 최신버전으로 다시 다운 받습니다.

  • 이미지 삭제

    images명령어를 통해 얻은 이미지 목록에서 이미지 ID를 입력하면 삭제가 됩니다. 단, 컨테이너가 실행중인 이미지는 삭제되지 않습니다. 컨테이너는 이미지들의 레이어를 기반으로 실행중이므로 당연히 삭제할 수 없습니다.

  • 컨테이너 로그

5. 마치며

여기까지 도커에 대해 기본적인 내용부터 컨테이너를 실행하고 살펴보는 방법까지 알아보았습니다. 저는 기본적으로 컨테이너 1개만을 올려서 사용해봤었는데요. 계속해서 compose구성(docker의 명령어들의 집합)을 하고 배포시에는 오케스트레이션툴(스웜/쿠버네티스)까지 학습하며 정리해볼 예정입니다.
[1]도커 Compose 구성

워니즈 블로그
워니즈 깃헙

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다