DevOps/Docker

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

재성스 2024. 8. 20. 11:18
반응형

컨테이너란? 

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

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

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

Docker란?

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

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

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

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

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

 

반응형