[Docker] Docker 란

Docker 란

구글에 검색하면 “애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 오픈 소스 컨테이너화 플랫폼”이라는 사전적 정의가 나온다.
하지만 직접 써보기 전까지는 이미지, 컨테이너 같은 용어가 전혀 와닿지 않는다.

쉽게 말해, 도커는 배포 환경의 ‘불확실성’을 제거하기 위해 등장했다.


🛠️ 왜 도커를 쓰는가? (OS와 설치의 늪)

프론트엔드든 백엔드든 개발을 하면 결국 배포를 해야 한다. 그런데 이 배포라는 게 생각보다 까다롭다.

윈도우냐 리눅스냐에 따라 설치 방법이 제각각이다.

자바 버전 하나만 달라도 실행이 안 되는 경우가 부지기수다.

서버 환경이 바뀔 때마다 WAS, 웹 서버 설정을 새로 하느라 진을 다 뺀다.

도커는 이 복잡한 과정을 “그냥 OS 위에 도커 하나 깔고 끝내자”로 해결했다. 도커만 있으면 어떤 OS에서든 명령어로 필요한 환경을 즉시 구축하고 공유할 수 있기 때문이다.


🎮 스타크래프트로 이해하는 도커 개념

글로만 보면 어려우니, 국민 게임인 스타크래프트에 비유해 보자.

  1. 도커 이미지 (Image) = 유닛 생산 ‘빌드 오더’
    이미지는 유닛을 뽑기 위한 설계도와 같다.
    “어떤 OS를 쓰고, 어떤 라이브러리를 설치하라”는 내용이 꽝 찍혀 있는 스냅샷이다.
    이 설계도만 있으면 어느 맵(컴퓨터)에서든 똑같은 마린을 뽑을 수 있다.

  2. 도커 컨테이너 (Container) = 전장에 배치된 ‘유닛’
    설계도(이미지)를 보고 실제로 생산된 개별 유닛이다.
    설계도는 하나지만 마린은 수십 기를 뽑을 수 있듯, 컨테이너도 독립적으로 여러 개를 띄울 수 있다.
    한 유닛이 죽어도(오류가 나도) 다른 유닛이나 본진(OS)에는 영향을 주지 않는다.

  3. 도커 컴포즈 (Compose) = ‘부대 지정’
    우리가 만들 IoT 파이프라인에는 EMQX, Kafka, Consumer 등 여러 유닛이 필요하다.
    이걸 일일이 컨트롤하려면 손이 많이 간다.
    도커 컴포즈는 Ctrl + 1로 부대 지정을 하듯, 설정 파일 하나로 여러 컨테이너를 한꺼번에 출격시키는 치트키다.

Tags:

Updated:

Leave a comment