도커란 무엇인가?

도커는 마이크로서비스 운용에 특화된 매우 작은 운영체제이다

소프트웨어를 개발하는데 필요한 스택은 매우 제각각이다. 공동 개발에 있어 모든 개발자가 동일한 환경을 세팅하는 것은 여간 쉬운일이 아니다.

부두가에서 일하는 노동자(docker)를 떠올려보자. 그들이 배에 실어야하는 물건의 크기는 제각각 일테지만, 작업의 효율성을 높이기 위해 동일한 크기의 컨테이너(container)에 보관한 뒤에 배에 싣는다. 이렇게 되면 많은 표준화된 방법으로 보다 많은 짐을 안정적으로 배에 실을 수 있게 된다.

다시 개발 이야기로 돌아와서, 우리는 소프트웨어를 성공적으로 개발하고, 테스트하고, 그리고 배포하기 위해 모든 실행 환경을 동일하게 맞출 필요가 있다. 가상 머신(Virtual Machine)을 이용하면 어느정도 해결이 가능하지만 무겁고 유연하지 못하다.

도커는 가상 머신을 대체할 수 있는 아주 작고 유연한 실행 환경이다. 특수한 목적에 맞게 설계된 아주 작은 운영체제라고 볼 수 있다. 개발 환경을 컨테이너 격리하여 복잡성을 통제한다. 확장에는 열려 있기 때문에 원하는 실행 환경을 쉽게 만들어낼 수 있다.

도커 허브

https://hub.docker.com/

도커의 기초적인 사용법을 배웠다면, 도커 허브에 들어가 원하는 이미지(Image)를 찾아보자. 만약 맨땅에 헤딩부터 했다면 최소 몇시간, 최대 몇일이 걸릴지 몰랐을 개발 환경 세팅을 수 초, 수 분만에 구축 할 수 있다!

이미지(Image)와 컨테이너(Container)

이미지(Image)는 컨테이너(Container)로 실행 될 수 있는 프로그램(Program)이다. 컨테이너(Container)는 이미지(Image)가 실행되어 적재되어 있는 상태이다.

객체지향으로 따지면, 이미지는 클래스(class), 컨테이너는 인스턴스(instance)라고 할 수 있다.

도커 애플리케이션 만들기

도커 애플리케이션을 만드는 과정은 일반적인 소프트웨어 개발 과정과 유사하다.

(도커 파일) → 빌드 → (이미지) → 실행 → (컨테이너)

도커 핵심 명령어

커맨드 목적
docker build 도커 이미지를 빌드한다
docker run 도커 이미지를 컨테이너로 실행한다
docker commit 도커 컨테이너를 이미지로 커밋한다
docker tag 도커 이미지에 태깅한다

참고문헌