이전글에 이어서 이번엔 각각의 툴의 용도를 알아보자


‘도커’란

어플리케이션을 패키징 할 수 있는 툴
컨테이너라고 불리는 유닛안에 어플리케이션과 필요한 시스템 툴, 디펜던시 등을 묶어서 다른 서버나 pc에 쉽게 배포하고 구동 할 수 있게 도와줌.

예를들면 소스만 그대로 서버에 보낸다고 어플리케이션이 구동이 되지 않는다.
환경설정이나 외부 라이브러리 등을 설정해주어야 하는데, 서버나 pc마다 모든것을 설치,설정하고 사용하라고는 할 수 없다.
또 설치를 하더라도 버전이 맞지않는 등의 번거로운 문제들이 발생 할 수도 있다.
그래서 코드 뿐만 아니라 필요한 모든 것들을 도커 컨테이너에 넣으면 어떤 pc에서도 동일하게 구동할 수 있는 것이다.

처음에 ‘그럼 vmware같은 가상머신 같은건가?’ 라는 생각이 들었는데, 이건 운영체제를 이해하면 금방 다른 것을 알 수 있을것이다.
가상머신은 각각의 운영체제를 포함하고 있기 때문에 굉장히 무겁고 오래걸린다. 또 리소스도 많이 차지한다
컨테이너는 host OS 위에서 개별적인 컨테이너를 만든것이라 어플리케이션만 고립적으로 사용할 수 있다.
이런 것을 컨테이너 엔지니어라고 하고, 그 중 하나가 도커이다.


‘도커’의 동작 순서

컨테이너를 만들기 위해서는 3가지가 필요하다.

  1. 도커파일 설명서라고 이해하면 쉽다. 구동하기 위해 꼭 필요한 파일이나 설치 디펜던시, 환경변수, 구동방법(스크립트) 등이 포함된다.

  2. 이미지 위에서 작성한 도커파일을 통해 이미지를 만들수 있는데
    이미지 안에는 코드, 런타임 환경, 시스템 툴, 시스템 라이브러리 등
    실행되고있는 애플리케이션의 상태를 이미지로 만들어 준다고 생각하면 된다.
    사진이미지와 마찬가지로 이 이미지는 수정할 수 없는 불변의 상태가 된다.

  3. 컨테이너 컨테이너는 위에서 캡쳐해 둔 이미지를 개별적인 환경에서 실행 할 수 있게 한다. 컨테이너 안에서 구동 되는 것이다.


‘도커’의 배포

로컬에서 이미지를 만든 후 컨테이너 레지스트리에 push를 하고
필요한 서버나 pc에서 pull을 받아 그대로 실행하면 된다
(단, 이미지를 정상적으로 실행하기 위해서는 컨테이너 엔진(현재 글에서는 도커)를 설치해야 한다

컨테이너 레지스트리는

  • docker hub / redhat quay.io / github packages (이상 public)
  • aws / google cloud / ms Azure (이상 private) 로 주로 사용하며 업무용으로는 일반적으로 private를 사용한다

Updated: