에필로그

멜론 빅데이터팀에서도 서서히 Docker를 도입하려고 합니다. Docker가 나온지 꽤 되었지만 현재까지 도입하지 않은 이유는 회사에서 가상화장비까지는 쓰고 있지만 클라우드 컴퓨팅에 가깝게 장비가 추가/제거가 빈번하지 않았기 때문입니다. 하지만 최근 1년간 IDC 이중화 등등 더 나은 인프라 환경을 위해 노력하고 있고 이 추세에 맞추어 Docker를 사내 시스템부터 서서히 도입해보고자 합니다.

아래 글은 우분투 서버 환경에서 Docker를 설치/구동하는 글입니다. 효율적인 설명을 위해 존칭을 생략하는점 양해 부탁 드립니다.

개요

Docker가 설치된 적이 없는 우분투에서 Docker Engine, Docker Compose를 설치하는 과정을 정리하여 포스팅 한다.

또한 IDC 서버에서 Docker Registry가 막혀있는것의 대안인 Docker 이미지를 save, load하는 방법을 포함한다.

결론 요약

이 글에서 다루는 내용의 요약은 아래와 같습니다.

  • 우분투 관련 패키지 설치
  • Docker, Docker Compose 설치
  • 필요한 Docker 이미지 로컬환경에서 이미지로 save
  • Docker가 실행될 서버에서 이미지 load
  • Docker나 Docker Compose 시작!

기존 설치된 docker engine 제거

혹시 기존에 docker를 사용하였던 적이 있다면 아래 커맨드로 기존 docker를 깔끔하게 삭제한다.

$ sudo apt-get remove docker docker-engine

repository 업데이트 및 의존성 설치

Docker Engine 설치 전 우분투에서 필요한 의존성을 모두 설치한다.

$ sudo apt-get update

# 세줄을 이어붙여야 커맨드가 실행됨
$ sudo apt-get -y install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

# 다섯줄을 이어붙여야 커맨드가 실행됨
$ sudo apt-get -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Docker 공식 GPG 키 설치

Apt 레파지토리 추가 전 GPG 키를 설치한다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Stable 레파지토리 추가

Docker용 Apt repository 중 Stable 버전의 레파지토리를 추가한다.

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Docker 설치

Docker Engine을 Apt를 통해 설치한다.

$ sudo apt-get update && sudo apt-get -y  --allow-unauthenticated install docker-ce

# 상용환경에서는 필요시 버전을 명시하여 docker를 설치한다.
$ sudo apt-get install docker-ce=version

Docker Compose 설치

Docker Compose는 CURL을 통해서 설치할 수 있는데 아래의 URL에서 한글로 “버전” 표시해둔 부분을 Docker Compose 버전 릴리즈를 참고하여 설치하면 된다.

$ sudo curl -L https://github.com/docker/compose/releases/download/버전/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

현재 최신 버전은 1.13.0으로 해당버전으로 설치하는 스크립트는 아래와 같다.

$ sudo curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

Docker Compose 퍼미션 수정

$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo chown lks21c /usr/local/bin/docker-compose

Docker 이미지 추출하기

$ docker save redash > redash.tar

Docker 이미지 로드하기

$ docker load < redash.tar    

서버에서 Docker 실행하여 검증하기

실행하고자 했던 Docker 이미지를 실행하면 정상 동작하는 것을 확인 할 수 있다.

사내 도입시 추가 아이디어

개인적인 생각이지만 해보진 않았지만 아래와 같은 아이디어는 충분히 생각해봄직 할것 같다.

  • Repository로 Docker 이미지들 관리
  • Docker가 설치된 장비에 공통 이미지 load 자동화

필자의 생각의 근거는 Docker Registry를 직접 사용한것 대비 아래와 같이 구성하면 아래와 같은 이점이 생길수 있기 때문이다.

  • 인터넷망을 차단하는 보안의 이점
  • 사내 자체제작 이미지를 관리 가능

상용으로 쓸 때 추가 설정

위의 아이디어 이후 추가적으로 사내에 적용한 것 관련하여 정리해둔다.

  • root권한이 아닌 계정으로 docker 서비스 띄우려면 링크 참고
  • docker registry 구축 한다면
    • 사내 저장소로 docker push 할일이 있다면 ca.crt 이동
    • 외부망을 끊고 사내 저장소로 미러링 사용하면 /etc/docker/daemon.json 설정