티스토리 뷰

 

[Docker] 도커의 구조, 도커 컨테이너의 생애주기, 도커의 장단점

 

 

📍 도커의 구조

  • 물리 서버 > 리눅스 운영체제 > 도커 엔진 > 컨테이너 (내부에 리눅스 비슷한 것 있음)
  • 컨테이너들은 리눅스 운영체제를 공유하지만 각 컨테이너 내부에도 운영체제와 비슷한 시스템이 존재함. (하지만 운영체제는 아님.)
  • 도커에서는 컨테이너가 완전히 분리되어 있으므로 밑바탕이 되는 리눅스 운영체제의 주변 부분이 컨테이너 속 프로그램의 명령을 직접적으로 전달받을 수 없다. 따라서 컨테이너 속에 운영체제의 주변 부분이 들어 있어 프로그램의 명령을 전달받고 이를 커널에 전달하는 구조로 되어 있다.
  • 도커는 리눅스 운영체제에서만 동작할 수 있으므로 Window, MacOS에서는 Hypervisor를 설치하여 VM으로 리눅스 운영체제를 생성하여 설치하거나 Window, MacOS용 도커 데스크톱을 설치하여 도커를 실행하는 데 필요한 리눅스 운영체제를 포함하는 패키지를 설치해 사용한다.

 

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

  • 이미지(image)
    • 컨테이너의 설계도 역할 수행. 컨테이너를 생성하는데 사용함.
    • 이미지를 사용하면 동일한 컨테이너를 여러 개 생성하는 것도 가능.
    • 이미지 -> 컨테이너 생성 / 컨테이너 -> 이미지 생성 둘 다 가능.
  • 컨테이너는 도커 엔진만 설치되어 있으면 구동이 가능하므로 다른 서버나 컴퓨터에 도커 엔진을 설치하고
    새로운 도커 엔진에 이미지를 이용해 똑같은 컨테이너를 생성할 수 있다.
  • 또한 공개된 컨테이너 이미지가 모여 있는 도커 허브 에서 원하는 컨테이너의 이미지를 다운받을 수 있으며,
    누구든지 이미지를 등록하고 공개하여 다른 사람들과 공유할 수 있다.
  • 도커 허브에서는 리눅스 배포판들의 버전별 이미지 뿐만 아니라, 소프트웨어 회사에서 제공하는 공식 컨테이너 이미지(ex Nginx, MySQL 등)도 다운이 가능하다.
안전한 컨테이너 이미지 고르는 법
  • 공식 이미지 사용
    • 도커에서 직접 배포하거나 해당 소프트웨어를 개발 및 관리하는 기업에서 제공하는 이미지를 사용
  • 커스텀 이미지를 직접 생성하여 사용
    • 필요한 최소한의 요소가 담긴 이미지에 필요한 소프트웨어를 추가로 설치해 커스텀 이미지를 만드는 것
    • 모든 이미지가 위험성을 안고 있는 것은 아니기 때문에 신중하게 이미지를 선택하여 사용하는 것이 중요함.

 

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

  • 컨테이너를 만들고, 실행하고, 종료하고, 폐기하고, 다시 생성하는 일련의 과정들을 컨테이너의 생애주기라고 한다.
  • 컨테이너에 들어 있는 데이터들은 주로 도커가 설치된 물리적 서버(호스트)에서 디스크를 마운트해 데이터를 저장하므로 컨테이너가 폐기되더라도 데이터는 컨테이너 외부(호스트 서버 or 외부 저장장치)에 저장되므로 컨테이너를 폐기하더라도 데이터 유실 없이 안전하게 데이터를 저장할 수 있다. 또한, 이렇게 저장한 데이터들은 다른 컨테이너와도 공유할 수 있기 때문에 매우 편리하다.
  • 운영체제 & 소프트웨어 부분과 데이터 영역을 분리함으로써 컨테이너는 계속 생성하고 폐기하는 것을 반복하지만,
    데이터는 계속 유지할 수 있다.

 

📍 도커의 장점

  • 물리 서버 한 대에 여러 개의 서버를 띄울 수 있으므로 그만큼 물리 서버의 수를 줄일 수 있으며 효율을 높일 수 있음.
  • 컨테이너는 자유로이 옮기고 복제할 수 있어 물리적 환경의 차이, 서버 구성의 차이를 무시할 수 있으므로 운영 서버와 개발 서버의 환경 차이로 인한 문제 원천 방지 가능.
  • 컨테이너에 리눅스 커널은 포함되어 있지 않으므로 가상화 기술에 비해 압도적으로 용량이 가볍다.
  • 명령어 몇줄로 환경 구축이 끝나기 때문에 다루기 쉽다.

 

📍 도커의 단점

  • 리눅스 운영체제에서 실행이 가능한 소프트웨어만 지원한다.
  • 물리 서버 한대에 여러 개의 컨테이너를 올리는 형태이므로 호스트 서버(물리 서버)에 문제가 생기면 모든 컨테이너에 영향을 미치게 되므로 치명적이다.
  • 프로그램을 여러 개 운영하는 것이 아니라 하나만 운영할 경우 오히려 오버헤드가 커질 수 있다.

 

📍 도커의 용도

  • 팀원 모두에게 동일한 개발 환경을 제공해야 할 경우 (동일한 환경을 여러 개 구축해야 할 경우)
  • 새로운 버전으로 업그레이드 할 때 테스트가 필요한 경우 (격리된 환경을 이용하여 미리 테스트 해 볼 수 있음)
  • 동일한 서버가 여러 대 필요한 경우

 


 

본문의 내용은 그림과 실습으로 배우는 도커&쿠버네티스 (오가사와라 시게타카 저, 심효섭 옮김) 을 읽고 작성하였습니다.

http://www.yes24.com/Product/Goods/108431011

 

그림과 실습으로 배우는 도커 & 쿠버네티스 - YES24

컨테이너나 도커를 도통 이해하기 어려운 분들을 위한 본격 도커 입문서!이 책은 컨테이너 기술이 어렵게 느껴지는 엔지니어나 백엔드 기술에 자신이 없는 분들을 위한 도커 입문서다. 자세한

www.yes24.com

댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday
공지사항
최근에 올라온 글