Infra

Docker의 개념과 사용 이유에 대해서 (+ 라이프사이클)

JeongKyun 2022. 12. 2.
반응형

도커란?


컨테이너형 애플리케이션의 빌드, 배치 및 관리를 위한 오픈소스 플랫폼을 말한다. (= 오픈소스 컨테이너화 플랫폼)

이를 통해 개발자는 애플리케이션을 컨테이너로 패키징할 수 있다.

 

여기서 말하는 컨테이너는 애플리케이션 소스 코드를 임의의 환경에서 해당 코드의 실행에 필요한 운영체제(OS) 라이브러리 및 종속 항목과 결합하는 실행 가능한 표준 컴포넌트를 말한다. 

 

따라서 Docker는 기본적으로 개발자가 단일 API를 통한 업무 절감 자동화와 간단한 명령을 사용하여 컨테이너를 빌드, 배치, 실행, 업데이트 및 중지할 수 있도록 해주는 툴킷이다.

 

특징은?

  • 리눅스 컨테이너 기술을 기반으로 하는 오픈소스 서비스이다.
  • 애플리케이션 실행 환경을 코드로 작성할 수 있다.
  • OS를 공유, 격리화하여 관리할 수 있다.

 

In 프로세스

  • 특정 컨테이너에서 작동하는 프로세스는 기본적으로 컨테이너 안에서만 액세스 할 수 있다.
  • 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없다.

 

In 네트워크

  • 기본으로 컨테이너 하나에 IP주소가 할당되어 있다.
  • 하나의 컴퓨터가 하나의 IP주소를 갖는 것을 극복한다.

 

In 파일 시스템

  • 컨테이너 안에서 사용되는 파일 시스템은 구획화 되어있다.
  • 따라서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있다.

 

컨테이너의 공유와 격리를 구분해보면?

도커(좌)와 VM(우)의 구조

공유 격리
CPU 성능(하드웨어) 네트워크(IP, PORT)
메모리(하드웨어) 파일
리눅스 커널(호스트 OS) 프로세스

 


 

도커를 사용하는 이유는?

2008년, 리눅스 컨테이너 (LinuxContainers - LXC)는 리눅스의 단일 인스턴스에 대한 가상화가 완벽히 가능한 리눅스 커널에서 구현되었다. LXC가 오늘날에도 여전히 사용되고 있지만, 도커가 해당 기술(LXC)을 기반으로 사용되어 다음과 같은 기능을 향상 시켰다.

 

  • 개선되고 완벽한 이식성을 보여준다.
    • 도커 컨테이너는 데스크탑, 데이터 센터 및 클라우드 환경에서 수정 없이 실행된다.
  • 경량의 중량과 미세한 업데이트가 가능하다.
    • 도커 컨테이너를 사용하면, 각 컨테이너에서 오직 하나의 프로세스만 실행할 수 있다. 이를 통해 업데이트를 위해 해당 파트 중 하나를 중지하는 동안에도 계속 실행될 수 있는 애플리케이션을 빌드할 수 있다.
  • 자동화된 컨테이너 작성이 가능하다.
    • 도커는 애플리케이션 소스 코드를 기반으로 컨테이너를 자동으로 빌드할 수 있다.
  • 컨테이너 버전화가 가능하다.
    • 도커는 컨테이너 이미지의 버전을 트래킹하고, 이전 버전으로 롤백하며, 버전을 빌드한 사용자와 빌드 방법을 트래킹할 수 있다. 
  • 컨테이너 재사용이 가능하다.
    • 새 컨테이너를 빌드하기 위한 템플릿처럼, 기존 컨테이너는 기본 이미지로 사용될 수 있다.
  • 공유 컨테이너 라이브러리
    • 수천 개 이상의 컨테이너를 포함하는 오픈 소스 레지스트리에 액세스할 수 있다.

필자가 생각할 때 가장 큰 장점은 생산성인 것 같다. 어플리케이션을 구동하는 운영체제가 서로 다르다면 환경에 따라 변경할 부분은 분명 생기는데, 도커를 사용하면 해당 문제를 해결할 수 있다.

 

 

도커의 라이프사이클

도커 허브에서 필요한 이미지를 받은 후(Pull) 생성 + 시작/종료 까지 잘 나타내는 도식화라 볼 수 있다. 구조를 이해하는데 도움이 될것같아 첨부하였다. 이후에 도커의 추가적인 개념과 사용 예제 포스팅을 통해 이해도를 더 올려보도록 해보자.

 

'Infra' 카테고리의 다른 글

DockerFile의 개념과 예시 정리  (0) 2023.01.11
[CI/CD] Github Actions란? (개념/ 용어 정리)  (1) 2022.11.14

댓글

💲 많이 본 글