DevOps/Docker

Docker (1) - 컨테이너와 Docker 기초 개념

개발자-제이 2024. 8. 20. 11:18

컨테이너란? 

컨테이너는 애플리케이션을 실행하기 위한 모든 환경을 하나의 독립된 상자(Container)에 담아 제공하는 개념이다.

애플리케이션을 실행하기 위해 필요한 운영체제의 일부, 라이브러리, 미들웨어 등의 요소를 모두 포함한 컨테이너는, 어디서나 일관된 환경에서 애플리케이션을 실행할 수 있게 해준다.

컨테이너는 가상화 기술의 한 형태로, 가상 머신(VM)과는 달리 운영체제 커널을 공유한다. 일반적으로 하나의 컨테이너는 하나의 프로세스를 실행하지만, 여러 프로세스를 실행할 수도 있다. 이로 인해 가상 머신보다 훨씬 가볍고 빠르게 실행될 수 있다.

Docker란?

Docker는 앞서 설명한 컨테이너를 생성, 관리, 배포하는 데 필요한 도구와 기능을 제공하는 오픈 소스 플랫폼이다.

Docker를 통해 애플리케이션과 그에 필요한 모든 종속성을 하나의 이미지로 만들어 쉽게 관리할 수 있으며, 이 이미지를 사용해 다양한 환경(개발, 테스트, 프로덕션 등)에서 애플리케이션을 일관되게 실행할 수 있다. 또한, 각 애플리케이션은 독립된 컨테이너 안에서 실행하기 때문에 서로 간섭하지 않도록 보장된다. 

* 컨테이너와 이미지 차이? 

  • 이미지(Image)
    • 이미지는 애플리케이션과 그 실행에 필요한 모든 파일, 라이브러리, 종속성을 포함하는 읽기 전용 템플릿
    • 이미지는 애플리케이션을 실행하기 위한 기본 설계도라 할 수 있으며, 이 설계도에는 애플리케이션이 실행되기 위한 모든 환경 설정이 포함되어 있다.
    •  이미지는 독립적이며, 실행 가능한 상태가 아니지만 컨테이너를 생성하는 데 사용된다.
  • 컨테이너(Container)
    • 컨테이너는 이미지를 기반으로 생성된 실행 가능한 인스턴스
    • 컨테이너는 이미지를 실행하는 실제 환경이며, 이미지가 설계도라면, 컨테이너는 그 설계도를 바탕으로 실제로 만들어진 실체라고 할 수 있다.
    • 컨테이너는 독립된 환경에서 애플리케이션을 실행하며, 컨테이너 내부에서는 이미지에 정의된 내용이 구체적으로 실행된다. 
    • 여러 컨테이너가 동일한 이미지를 기반으로 만들어 질 수 있으며, 각각은 서로 독립적으로 작동한다.

자바로 비유를 들면, 이미지가 자바 클래스라면 컨테이너는 클래스 기반으로 만들어진 객체(인스턴스)라고 생각하면 쉽다.

 

반응형