ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

Image

 

 
 

Docker

 

도커 이미지

 

What ?

Image

 

애플리케이션을 실행하기 위해 필요한 모든 파일, 설정, 종속성을 포함하는 **불변(immutable)**의 읽기 전용 템플릿입니다.

도커 이미지는 컨테이너를 실행할 수 있도록 해주는 일종의 "앱" 패키지입니다. 컨테이너는 이 이미지를 바탕으로 실행됩니다.


What ?

Image

sddd

dddfs

  1. 불변성(Immutable): 한 번 생성된 도커 이미지는 변경될 수 없습니다. 즉, 이미지를 수정하려면 새로운 이미지를 빌드해야 합니다.
  2. 레이어(Layer): 도커 이미지는 여러 개의 레이어로 구성됩니다. 각 레이어는 파일 시스템의 변경 사항을 포함하며, 새로운 레이어를 추가할 때마다 이전 레이어에 덧붙여집니다. 예를 들어, 기본 운영 체제 이미지 위에 애플리케이션이나 종속성을 추가하는 방식입니다.
  3. 컨테이너 실행의 기반: 도커 이미지는 컨테이너를 실행할 때 읽기 전용으로 사용됩니다. 컨테이너가 실행되면 이미지를 바탕으로 일시적인 읽기-쓰기 파일 시스템이 생성되며, 이 파일 시스템에서 애플리케이션이 실행됩니다.
  4. 공유 가능: 도커 이미지는 Docker Hub와 같은 레지스트리에 푸시하여 다른 사람들과 공유할 수 있습니다. 다른 사용자가 이 이미지를 받아서 자신의 환경에서 실행할 수 있습니다.

도커 이미지와 컨테이너의 관계:

  • 도커 이미지는 컨테이너의 "청사진"입니다. 즉, 이미지는 실행할 준비가 된 애플리케이션의 상태를 담고 있습니다.
  • 도커 컨테이너는 이미지에서 생성된 실행 중인 인스턴스입니다. 이미지를 기반으로 실행 가능한 애플리케이션이 컨테이너로 변환됩니다. 이 컨테이너는 읽기-쓰기 가능한 파일 시스템을 가지며, 컨테이너 내부에서의 작업은 해당 컨테이너의 상태를 변경할 수 있습니다.

예시:

  1. 이미지 빌드: 도커 이미지는 Dockerfile을 사용해 생성합니다. Dockerfile은 이미지를 빌드하는 명령들을 포함한 스크립트입니다. 예를 들어, 아래와 같은 Dockerfile이 있을 수 있습니다.
  2. Dockerfile
    Copy
    # 베이스 이미지로부터 시작 FROM node:14 # 애플리케이션 파일을 컨테이너 안으로 복사 COPY . /app # 작업 디렉토리 설정 WORKDIR /app # 의존성 설치 RUN npm install # 애플리케이션 실행 CMD ["npm", "start"]
  3. 이미지 빌드 명령: 위 Dockerfile을 이용해 이미지를 빌드하는 명령은 다음과 같습니다.이 명령은 현재 디렉토리에 있는 Dockerfile을 기반으로 my-app이라는 이미지를 빌드합니다.
  4. bash
    Copy
    docker build -t my-app .
  5. 이미지 실행: 이미지를 실행하려면 해당 이미지를 기반으로 컨테이너를 만들어야 합니다.이 명령은 my-app 이미지를 기반으로 my-container라는 이름의 컨테이너를 생성하고 실행합니다.
  6. bash
    Copy
    docker run -d --name my-container my-app

도커 이미지의 사용 사례:

  1. 애플리케이션 배포: 도커 이미지는 애플리케이션을 빠르고 일관되게 배포하는 데 사용됩니다. 개발 환경, 테스트 환경, 프로덕션 환경에서 동일한 이미지를 사용할 수 있기 때문에 환경 차이로 인한 문제가 줄어듭니다.
  2. 환경 설정: 도커 이미지를 사용하면 특정 애플리케이션과 관련된 환경을 하나의 이미지로 패키징할 수 있습니다. 예를 들어, Python 애플리케이션을 실행하는 데 필요한 모든 라이브러리와 환경을 하나의 이미지를 통해 설정할 수 있습니다.
  3. CI/CD 파이프라인: 도커 이미지는 지속적 통합(CI)지속적 배포(CD) 파이프라인에서 널리 사용됩니다. 코드를 빌드하고 테스트한 후, 성공적인 빌드 이미지를 레지스트리에 푸시하여 자동으로 배포하는 흐름을 만들 수 있습니다.

도커 이미지 예시

  1. 공식 이미지: Docker Hub에서는 다양한 공식 이미지를 제공합니다. 예를 들어, node, python, nginx, mysql 등의 이미지는 공식적으로 지원되며, 이러한 이미지를 기반으로 컨테이너를 실행할 수 있습니다.
  2. 커스텀 이미지: 사용자 정의 애플리케이션을 위해 Dockerfile을 작성하고, 이를 기반으로 자신만의 커스텀 이미지를 만들 수 있습니다. 예를 들어, 웹 애플리케이션, 데이터베이스, 기타 서비스를 위한 이미지를 만들 수 있습니다.

결론

도커 이미지는 애플리케이션을 실행하기 위한 템플릿으로, 애플리케이션의 파일, 라이브러리, 환경 설정 등을 포함합니다. 이미지는 실행 가능한 컨테이너를 만들기 위한 청사진 역할을 하며, 이를 바탕으로 다양한 환경에서 일관되게 애플리케이션을 실행할 수 있습니다.

728x90