Docker 개념

KIM JEONG DONG·2024년 7월 29일
post-thumbnail

Docker

  • Docker에 관련된 설명들을 기재한다.

Container / Docker

Container란?

  • 애플리케이션이 다른 컴퓨팅 환경으로 빠르게 안정적으로 실행되도록 코드와 모든 종속성을 패키징하는 단위이다.
  • 가상화 기술을 통해 애플리케이션과 개발 환경을 격리된 공간에서 실행하는 단위

Docker란?

  • 동일한 OS 계층 위에서 실행되는 도커는 컨테이너 배포에 필요한 대부분의 모든 기능을 제공하는 플랫폼이다
  • 다양한 환경에서의 실행을 보장하며 컨테이너 이미지 패키징을 통한 배포가 쉬우며 경량화 되있고 자원 효율성이 뛰어나다.
  • 유연성 ↑ 이식성 ↑ 운영비효율 ↑

Docker 사용 이유

  • 기존 VM을 통한 가상화 배포 방식은 각각의 OS를 사용 했기 때문에 무거웠으며, 많은 리소스가 소비 된다.
  • 아래 그림은 서로 다른 차이점을 나타낸 그림이다.

가상머신 배포 환경


도커 배포 환경


Docker의 핵심 기능

  • 도커 컨테이너는 가상화 공간을 생성 할 때 리눅스 자체 기능 사용을 통해 프로세스 격리단위 환경을 만드므로 성능 손실이 없다.
  • 커널을 공유해서 사용하고, 컨테이너 내부에는 라이브러리 및 실행 파일만 있으므로 용량이 작다.

Docker의 구성 요소

Docker Client :

  • 명령어를 통해 컨테이너 실행 및 관리 등 할 수 있으며, 이미지를 빌드하거나 다운로드가 가능하다.

Docker HOST :

  • 컨테이너를 실행하는데 있어 사용 되는 가상머신이다.
  • 클라이언트로부터 요청을 받고 컨테이너 실행, 시작, 중지, 제거 등 작업을 수행한다.

Docker Demon :

  • 도커에서 사용되는 핵심 엔진이다.

Docker Registry :

  • 도커의 이미지를 관리하고 저장하는 중앙 집중식 저장소이다.
  • 독립적인 레지스트리를 구축하여 이미지를 안전하게 저장하고 관리할 수 있다.

Docker Image

  • 컨테이너화 된 앱을 실해 시키기 위한 모든 필요한 파일과 환경설정, 종속성 등을 포함한 독립적인 경량화 된 패키지이다.
  • 도커 이미지는 불변의 상태이고 컨테이너와 1 : N 을 관계를 갖는다. 즉, 1개의 이미지로 여러 개의 컨테이너를 생성할 수 있다.

Docker Image의 구성 요소

베이스 이미지 :

  • 다른 이미지를 기반할 수 있다. 예를 들면, ubuntu, node, python 등의 이미지를 베이스로 적용하여 새로운 도커 이미지를 생성할 수 있다.

레이어 :

  • 도커 이미지는 여러 레이어로 구성 되는데, 각 레이어는 파일 시스템의 변경 사항을 포함한다. (추가, 수정, 삭제 등)
  • 이미지가 업데이트 될 때 마다 새로운 레이어가 추가 된다.

Docker File :

  • 도커 이미지를 생성 및 빌드하기 위한 사용되는 스크립트 파일이다.
  • 이미지 빌드 과정을 단계 별로 정의하고, 이 각 단계는 하나의 레이어를 생성한다.

단계 별로 도커 이미지 빌드 생성하기

- Docker File
# 베이스 이미지로 Node.js를 사용합니다.
FROM node:14

# 애플리케이션 디렉토리를 생성합니다.
WORKDIR /usr/src/app

# 애플리케이션의 종속성을 설치합니다.
COPY package*.json ./
RUN npm install

# 애플리케이션의 소스 코드를 복사합니다.
COPY . .

# 애플리케이션이 바인드할 포트를 명시합니다.
EXPOSE 8080

# 애플리케이션을 실행합니다.
CMD ["node", "app.js"]
  • 해당 Docker File을 이미지로 빌드하기 위해서는 다음과 같은 명령어를 입력해야 한다.
docker run -p 8080:8080 -d my-node-app
  • 그리고 이제 빌드 된 이미지를 기반으로 도커 컨테이를 생성하고 실행할 수 있다.
docker run -p 8080:8080 -d my-node-app

0개의 댓글