본문 바로가기
책곡책곡/그림과 실습으로 배우는 도커 & 쿠버네티스

CHAPTER 1. 도커란 무엇인가?

by 몌으니 2024. 10. 6.
그림과 실습으로 배우는 도커 & 쿠버네티스 (위키북스)

 

1장 - 도커란 무엇인가?

도커란 무엇인가?

도커는 '데이터 또는 프로그램을 격리시키는 기능'을 제공하는 소프트웨어

클라이언트 컴퓨터에서 사용할 수도 있지만 서버에서 사용하는 것이 주 용도이다.

다양한 프로그램과 데이터를 각각 독립된 환경에 격리하는 기능을 제공한다.

 

작게 쪼갠 독립된 창고에 데이터나 프로그램을 두는 것.

독립된 창고컨테이너라고 한다. 컨테이너를 다루는 기능을 제공하는 소프트웨어가 도커이다.

도커를 사용하려면 도커 엔진을 설치해야 한다. 도커 엔진을 사용해 컨테이너를 생성하고 구동시킬 수 있다.

 

도커 엔진이 있어야 컨테이너를 만들 수 있지만 이 외에도 컨테이너의 빵틀과도 같은 역할을 하는 이미지가 필요하다.

담고 있는 소프트웨어의 종류에 따라 다양한 이미지를 사용한다.

(아파치 컨테이너를 만들려면 아파치 이미지를 사용하고, MySQL 컨테이너를 만들려면 MySQL 이미지를 사용한다.)

 

도커는 주로 서버 환경을 격리하기 위해 사용된다.

데이터나 프로그램을 독립된 환경에 격리해야 하는 이유는?

  • 대부분의 프로그램은 프로그램 단독으로 동작하는 것이 아니라 어떤 실행 환경이나 다른 프로그램을 이용해 동작한다.
  • 프로그램 간 공유해서 사용하기 때문에 공유하는 대상을 어느 한쪽만을 위해 수정하면 다른 쪽에서 오류가 발생하게 된다.
  • 한 서버에서 함께 지내려면 여러가지 신경 쓸 것이 많아진다.

도커 컨테이너는 다른 컨테이너와 완전히 분리된 환경.

즉, 컨테이너 안에 들어있는 프로그램은 다른 프로그램과 격리된 상태가 된다.

도커 컨테이너를 사용해 프로그램을 격리하면 여러 프로그램이 한 서버에서 실행되면서 발생하는 문제를 대부분 해결할 수 있다.

 

서버와 도커

도커는 서버에서 사용되는 소프트웨어.

서버란? 어떤 서비스를 제공하는 것인데 개발 현장에서 '서버'는 두 가지 의미를 갖는다.

  • 기능적 의미의 서버
  • 물리적 컴퓨터로서의 서버

'웹서버에 올려줘', '메일 서버가 죽었어' 등의 '무슨 무슨 서버'라는 말은 '무슨 무슨 기능을 제공한다'는 의미

웹 서버 = 웹 기능을 제공함

메일 서버 = 메일 기능을 제공함

 

반면, 물리적 컴퓨터로서의 서버는 말 그대로 '실물'을 뜻한다.

데스크톱과 마찬가지로 어딘가에 물리적으로 존재하는 컴퓨터다.

 

서버의 기능은 소프트웨어가 제공하는 것으로, 소프트웨어를 설치하면 '서버'의 기능을 갖게 된다.

물리적 컴퓨터로서의 서버에 여러개의 기능적 의미의 서버를 함께 둘 수 있다.

하나의 물리적 컴퓨터에 여러 기능적 의미의 서버를 함께 동작시키는 것은 도커의 장점과 관계가 있다.

 

일반적으로 한 대의 서버 컴퓨터에는 웹 서버를 한 벌 밖에 실행하지 못한다. 

그러나 컨테이너 기술을 활용하면 여러 개의 웹 서버를 올릴 수 있다.

물리 서버 한 대에 여러 개의 웹 서버를 띄우면 그만큼 물리 서버 수를 줄일 수 있어 비용도 절감시킬 수 있다.

 

도커의 컨테이너는 자유로이 옮길 수 있다.

(컨테이너 자체를 옮긴다기보다는 컨테이너 정보를 내보내고 다른 도커엔진에서 복원하는 형태이지만...)

 

도커를 이용하면 물리적 환경 차이, 서버 구성의 차이를 무시할 수 있다.

> 운영 서버와 개발 서버의 환경 차이로 인한 문제를 원천적으로 방지할 수 있다.

 

 

도커의 장단점

  •  장점
    • 이식성 : 어디서나 동일한 환경에서 애플리케이션을 실행할 수 있어 배포와 테스트 환경이 일관된다.
    • 경량화 : 컨테이너는 운영체제를 포함하지 않으므로, 리소스 소모가 적고 빠르게 실행된다.
    • 빠른 배포 : 컨테이너는 이미지를 기반으로 즉시 생성되어, 애플리케이션을 빠르게 배포하고 확장할 수 있다.
  • 단점
    • 운영 복잡성 : 여러 컨테이너를 관리하기 위해 Kubernetes나 오케스트레이션 도구가 필요해 운영이 복잡해질 수 있다.
    • 보안 문제 : 컨테이너는 호스트 커널을 공유하므로, 설정이 잘못되면 보안 위협에 노출될 수 있다.
    • 윈도우 지원 제한 : 도커는 리눅스에 최적화되어 있으며, 윈도우 환경에서는 기능적 제한이 있을 수 있다.