코딩공부/도커 & 쿠버네티스

6. 도커의 장점과 단점

에반셀린 2023. 8. 14. 13:55

https://product.kyobobook.co.kr/detail/S000001766450

 

시작하세요! 도커/쿠버네티스 | 용찬호 - 교보문고

시작하세요! 도커/쿠버네티스 | 쿠버네티스와 도커의 기본 사용 방법을 정확히 이해하는 것을 목표로 합니다!도커 컨테이너는 애플리케이션을 배포하기 위한 새로운 패러다임을 제시하는 가상

product.kyobobook.co.kr


1. 도커의 구조와 성질 및 그 장단점

이제부터 도커의 구조에 대해서 알아보고자 한다.

 

도커는 '환경을 격리할 수 있다'는 것이 핵심이다.

이러한 성질 덕분에 독립된 환경을 구축할 수 있고 이미지를 만들 수 있게 되며, 컨테이너에 커널을 포함시키지 않아도 되는 구조가 가능하다.

 

  • 독립된 환경
    - 독립된 환경 덕분에 '여러 개의 컨테이너를 띄울 수' 있으며, '똑같은 애플리케이션도 여러 개 띄울 수' 있다. 그중 일부를 교체하거나 수정할 수도 있다.

  • 이미지를 만들 수 있다.
    - 이미지를 만들 수 있는데 만든 이미지를 '도커 허브에서 배포'할 수 있다.
    - 구축 작업이 간단해지므로 '교체가 쉽고', '업데이트가 쉬운' 장점이 있다.
    - 이미지를 만들 수 있다는 특징은 이동성이 좋다는 특징으로 이어지기 때문에 '똑같은 컨테이너를 쉽게 만들 수 있고', '환경 이동이나 개발 환경을 구축'하기도 쉽다는 특징을 가지고 있다.

  • 컨테이너에 '커널을 포함시킬 필요가 없다.'
    - 컨테이너에는 커널(운영체제의 핵심이 되는 부분)을 포함시킬 필요가 없으므로 가볍고 배포판도 원하는 것을 사용할 수도 있다.

2. 도커의 장점과 단점

도커의 장점에는 다음과 같이 나타낼 수 있다.

 

  • 한 대의 물리 서버에 여러 대의 서버를 띄울 수 있다.
    - 한 대의 물리 서버에 여러 가지 기능을 안전한 상태로 띄울 수 있다.
    - 컨테이너에는 커널이 포함되지 않으므로 물리 서버의 운영체제에 의존한다.

  • 서버 관리가 용이하다.
    - 컨테이너를 이용해 각 소프트웨어를 독립된 환경에 격리하므로 다른 소프트웨어에 영향을 끼치지 않는다.
    - 항상 최신 상태로 소프트웨어를 유지하기 쉬운 구조가 된다.
    - 컨테이너의 교체나 수정이 쉬우므로 환경 이전도 간단하다.

  • 서버 고수가 아니어도 다루기 쉽다.
    - 명령 한 줄로 서버 구축이 끝나므로 '터미널에 명령을 직접 입력해야 한다'는 것 외에는 장애물이 없다.

도커의 단점에는 다음과 같이 나타낼 수 있다.

 

  • 리눅스 운영체제를 사용하는 기술이므로 리눅스용 소프트웨어밖에 지원하지 않는다.
  • 물리 서버 한 대에 여러 대의 서버를 띄우는 형태이므로 호스트 서버에 문제가 생기면 모든 컨테이너에 영향이 미친다.
  • 컨테이너를 여러 개 사용하는 형태를 가정하므로 컨테이너 하나를 장기간에 걸쳐 사용할 때는 그리 큰 장점을 느끼기 어렵다.

3. 도커의 주 용도

도커는 용도가 분명한 기술이다.

개발환경에서 팀원 모두에게 동일한 개발환경을 제공할 수 있어서 편리한 점이 있다.

특히, 여러 프로젝트에 동시에 참여하는 현장에서는 프로젝트별로 컨테이너를 따로 사용할 수 있다.

컨테이너는 운영환경과 완전히 동일하게 생성되므로 개발환경과 운영환경의 차이가 근본적으로 사라진다.

 

보통 개발환경으로 사용하는 컨테이너는 운영 서버 구축을 담당하는 사람이 있을 것인데 이 사람이 만들어 팀원에게 배포한다. 하나의 개발 서버를 공동으로 사용하면 수정으로 인한 경합이 발생할 수 있지만 이런 형태에는 로컬에서 개발을 마치고 적절한 때에 적용하면 되므로 팀 내에서 조정하면 된다.

 

또, 운영체제나 라이브러리 등의 새로운 버전을 먼저 개발환경에서 테스트한 후 운영환경에 적용할 때도 컨테이너를 활용할 수 있다. 컨테이너 형태를 유지하는 한 도커 엔진이 구동을 보장해 주므로 물리 서버와의 상성은 고려하지 않아도 되기 때문에 새로운 버전뿐만 아니라 변경된 환경에 대한 테스트에도 유용하다.

 

마지막으로 동일한 서버가 여러 대 필요한 경우에도 컨테이너를 이용해 한 대의 물리 서버에 똑같은 서버를 여러 개 만들 수 있다. 이렇게 하면 관리도 간편하고 물리 서버를 여러 개의 컨테이너가 공유하므로 비용도 절약할 수 있다.

 

명령 한 줄이면 서버를 필요한 만큼 띄울 수 있으므로 운영체제를 설치하고, 로그인한 다음 소프트웨어를 설치하는 단순 업무를 반복할 필요가 없다. 소프트웨어까지 하나로 묶은 패키지를 사용하면 더욱 편리하다.

 

이밖에도 스케일링에 유리하므로 웹 서버나 API 서버로 활용하는 등 다양한 활용 방법이 있다.