본문 바로가기

DevOps/Docker

[Docker 기본] Docker란?

Docker


컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴

 

컨테이너(Container)란?

 


하나의 컴퓨터 환경 내에서 독립적인 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념.

하나의 컴퓨터 내에서 여러개의 미니 컴퓨터를 구성하고 있는 형태라고 보면 되는데, 이 미니 컴퓨터를 도커에서는 컨테이너라고 부른다. 

 

 * 컨테이너와 컨테이너를 포함하고 있는 컴퓨터를 구분하기 위해 컨테이너를 포함하고 있는 컴퓨터를 '호스트(host) 컴퓨터' 라고 부른다.

 

컨테이너(Container)의 독립성


컨테이너는 독립적인 환경을 구성하고 있다. 어떤 것들을 독립적으로 관리하는지 알아보자.

  • 디스크(저장 공간) : 각 컨테이너마다 각자의 저장공간을 가지고 있다. 컨테이너는 다른 컨테이너의 내부 파일에 접근 할 수 없다.
  • 네트워크(IP, PORT) : 각 컨테이너마다 고유의 네트워크를 가지고 있다. 컨테이너는 각자의 IP 주소, port를 가지고 있다고 생각하면 쉽다.

 

이미지(Image)란?


게임기를 예로 들어 보자. 게임기에 칩을 꽂으면 다양한 게임을 실행할 수 있다. Docker에서 칩과 같은 역할을 하는 개념이 이미지(Image)이다.

Node.js 기반의 Express.js 서버 프로젝트를 이미지로 만들었다고 가정해보자. 이 이미지를 Docker로 실행시키면 Express.js 서버 프로젝트가 컨테이너 환경에서 실행된다. (미니 컴퓨터에서 Express.js라는 게임 칩을 꽂으면 Express.js 서버가 실행되는 것이다. 복잡한 설치 과정 없이 손쉽게 실행되는 것이다.)

 

 이미지(Image)는 프로그램을 실행하는 데 필요한 설치 과정, 설정, 버전정보 등을 포함하고 있다. 즉, 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있다.