본문 바로가기
책으로 하는 공부

[책 요약] 그림과 실습으로 배우는 도커 & 쿠버네티스 - 두 번째 이야기

by 뿔난 도비 2024. 8. 11.
반응형

저번 시간에 도커가 무엇인지에 대해 주로 다뤘다면 이번에는 도커에 대해서 알아보는 시간을 가집니다.
본 게시글은 시리즈 게시글이며, "그림과 실습으로 배우는 도커 & 쿠버네티스" 책을 읽고 정리한 내용을 담고 있습니다.
책에는 관심이 없더라도 도커에 대해 알고 싶은 분들께도 도움이 되었으면 합니다.
 

 그림과 실습으로 배우는 도커 & 쿠버네티스 - 두 번째 이야기

 

도커의 구조, 도커의 장점과 단점은 무엇인가?

 

1. 도커의 구조

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

3. 도커 컨테이너의 생애주기

4. 도커의 장점과 단점

추천글

위의 목차를 클릭하면 해당 글로 자동 이동 합니다.
 

도커의 구조

  • 운영체제 위에 도커 엔진이 동작하고, 도커 엔진 위에서 컨테이너가 동작하는 구조를 가지고 있다.
  • 이 구조를 그림으로 나타내면 아래와 같다.

도커의 구조

  • 모든 컨테이너에는 '리눅스 운영체제 비슷한 무언가' 가 들어있다.
  • 운영체제는 '소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할' 을 한다.

운영체제의 역할

  • 운영체제는 '커널' 부분과 그 외의 부분들로 구성된다.
    • 커널: 하드웨어를 다루는 부분
    • 그 외의 부분: 명령 전달을 수행. 커널이 실행한 결과를 프로그램에 전달함
  • 도커의 컨테이너는 독립된 환경이므로 리눅스 운영체제에서 컨테이너의 명령을 전달 받을 수 없다.
  • 따라서 컨테이너 속에는 운영체제의 커널 외 부분들이 들어가 명령들을 커널로 전달할 수 있도록 한다.
    • 리눅스 전체가 들어있는 것이 아니다. 그래서 '가벼움' 이라는 장점을 가진다.
     

도커에서의 명령 전달

  • 그림과 같은 구성을 가지므로 리눅스 환경에서만 사용 가능하다.

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

  • 이미지: 컨테이너의 설계도라고 볼 수 있다. 이미지를 통해 여러 개의 컨테이너를 생성 가능하다.
  • 반대로 컨테이너를 이미지로 만들 수 있다.
    • 이미지로부터 생성된 컨테이너의 구성이 변경될 경우, 변경된 구성의 설계도가 필요하다. 이럴 때 컨테이너를 이미지로 만들 수 있다.
  • 위와 같은 특징으로 인해 컨테이너의 이동이 자유롭다.
  • 이미지는 도커 허브에서 쉽게 구할 수 있다.
  • 도커 허브에는 공개된 컨테이너들의 이미지들이 모여있으며 이런 이미지들을 활용하면 원하는 구성의 컨테이너를 쉽게 생성 가능하다.
  • 도커를 사용할 때에는 '한 컨테이너에 한 프로그램' 을 원칙으로 한다.
  • 그 이유는 보안 및 유지 관리 측면에서 유리하기 때문이다.

도커 컨테이너의 생애주기

  • 컨테이너는 쓰고 버리는 일회용품과 같다.
  • 일일히 컨테이너의 구성을 업데이트 하기 보다는 새로운 컨테이너로 교체하는 것이 더 쉽다.
  • 컨테이너의 생애주기는 만들고, 실행하고, 종료하고, 폐기한 후, 다시 컨테이너를 만드는 일련의 과정을 의미한다.
  • 컨테이너가 폐기될 때, 컨테이너 내부의 파일들도 제거된다.
  • 따라서 중요한 데이터들을 구분하여 잘 보관해야한다.
  • 이를 위해서 호스트의 디스크를 저장공간으로 사용하기도 한다.
  • 이것을 '마운트' 라고 부르며, '디스크를 연결해 데이터를 기록할 수 있도록 한 상태' 를 의미한다.

마운트의 개념

  • 이처럼 컨테이너 외부, 즉 호스트의 일부분을 데이터 저장 공간으로 사용할 수 있다.
  • 이런 경우 여러 컨테이너에서 데이터를 공유하는 것도 가능하다.

도커의 장점과 단점

  • 장점
    • 독립된 환경
    • 이미지를 만들 수 있다
    • 컨테이너에 커널을 포함시킬 필요가 없다
    • 한 대의 물리 서버에 여러 대의 서버를 띄울 수 있다
    • 서버 관리가 용이하다
    • 다루기 쉽다
  • 단점
    • 리눅스 용 소프트웨어만 지원한다
    • 호스트에 문제가 생기면 모든 컨테이너에 영향을 끼친다
    • 컨테이너 수가 적은 경우 큰 장점을 느끼기 어렵다.
  • 그 외에도 동일한 서버가 여러 대 필요한 경우 도커를 사용할 수 있다!!
  • 최근 글쓴이도 도커를 이용해서 동일한 서버를 여러 대 실행시킨 경험이 있다
  • 예를 들어, API 서버가 요청 하나를 처리하는 데에 걸리는 시간이 길다면 하나의 API 서버가 모든 요청을 처리하게 되면 지연이 발생할 수 있다.
  • 이런 경우에는 동일한 API 서버를 두 대 이상 띄우고 사용자들의 요청이 한가한 서버 쪽으로 분산될 수 있도록 설정할 수 있다.
  • 이런 것을 스케일링이라고 한다.
  • 도커가 스케일링에 용이한 이유는 명령어 한 줄이면 동일한 구성의 서버를 필요한 만큼 띄울 수 있다.
  • 이런 장점으로 책에서도 웹 서버와 API 서버로 활용할 수 있다고 설명한다.

Keyword: Docker, 도커
 

추천글

 
2024.08.10 - [책] - 그림과 실습으로 배우는 도커 & 쿠버네티스 - 첫 번째 이야기

 

그림과 실습으로 배우는 도커 & 쿠버네티스 - 첫 번째 이야기

본 게시글은 시리즈 게시글이며, "그림으로 배우는 도커 & 쿠버네티스" 책을 읽고 정리한 내용을 담고 있습니다. 제 스스로 책 내용을 더 오랫동안 기억하기 위한 목적 이외에도 책을 읽을 시간

se-dobby.tistory.com

 

반응형