본문으로 건너뛰기

도커와 컨테이너에 대해 좀 더 자세히 알아보자

  • 물리 서버 안에서 어떤 형태로 자리 잡는가?
  • 컨테이너는 어떻게 만들어지는가?
  • 잘 사용하기 위해 알고 있어야 하는 지식과 노하우

Section1. 도커의 동작 원리

도커의 구조

운영체제 위에 도커 엔진, 그 위에 컨테이너
컨테이너 내부에는 리눅스 운영체제 비슷한 무언가가 들어있음
(※ 실제 운영체제는 아님!)

도커 구조


운영체제?

소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할
운영체제 = 커널 + 주변 부분
(ex. 입력/출력 처리 장치, 명령을 프로그램에 전달하는 역할)

도커는 운영체제 전체를 사용하는 게 아니라 커널만 공유
가볍고 효율적


리눅스, MacOS, Windows

대부분 도커는 리눅스를 기반으로 동작
그러나 MacOS, Windows에서도 도커 사용 가능

호스트 예시1
호스트 예시2


Section2. 도커 허브와 이미지, 그리고 컨테이너

이미지: 붕어빵 틀
컨테이너: 붕어빵 (이미지를 실행한 결과)

붕어빵 비유1
붕어빵 비유2

  • 이미지를 통해 컨테이너를 생성
  • 컨테이너에 새로운 기능을 추가 후 다시 이미지로 만들 수도 있음

도커 허브와 도커 이미지

도커 허브 = 이미지 저장소
hub.docker.com

공개된 컨테이너 이미지가 모여 있는 곳
(GitHub와 비슷한 개념)

이미지 예시

  • 운영체제만 포함
  • 단일 소프트웨어 포함
  • 여러 소프트웨어 포함

안전한 이미지 고르는 방법

  1. 공식 이미지 사용
  2. 커스텀 이미지 직접 생성

다양한 형태로 조합 가능한 컨테이너

도커의 원칙: 한 컨테이너에 하나의 프로그램

  • 보안 및 유지 관리에 유리

조합 구조 예시


Section3. 도커 컨테이너의 생애주기와 데이터 저장

도커 컨테이너는 일회용품에 가깝다

컨테이너 생애주기

  • 일반적으로 여러 개의 컨테이너를 동시에 가동함
  • 그렇다면 데이터는?

데이터 저장 문제


데이터 저장

컨테이너가 삭제되면 데이터도 함께 삭제됨

⇒ 영속적인 데이터 저장을 위해서는 호스트 디스크에 마운트 필요


Section4. 도커의 장점과 단점

장단점 요약

장점

  • 한 대의 물리 서버에 여러 대의 서버를 실행 가능
  • 서버 관리가 쉬움
  • 사용법이 간단함
  • 보안 측면에서 유리함

단점

  • 리눅스 기반 지식 필요 (러닝 커브)
  • 호스트 서버에 문제가 생기면 모든 컨테이너가 영향 받음
  • 컨테이너를 장기 운영 시 장점 감소
  • 컨테이너 1개만 쓰면 오히려 오버헤드

도커의 용도

  • 팀원 모두에게 동일한 개발 환경 제공
  • 새로운 버전 테스트 환경 구성
  • 동일한 서버가 여러 대 필요한 상황에 적합