[104-112] 유틸리티 컨테이너에 대해서

728x90
반응형

유틸리티 컨테이너에 대해서 

유틸리티 컨테이너: 환경만 제공하는 특수 컨테이너

 

 

유틸리티 컨테이너란?

유틸리티 컨테이너는 애플리케이션을 포함하지 않고, 특정 환경만 제공하는 컨테이너입니다. 이는 호스트 시스템에 툴을 설치하지 않고도 해당 환경을 활용할 수 있게 해줍니다.

주요 특징:

  • 애플리케이션 없이 환경만 포함
  • 특정 명령을 실행하기 위한 목적
  • 작업 완료 후 일반적으로 종료됨

 

 

컨테이너에서 명령 실행 방법

1. docker exec - 실행 중인 컨테이너에 명령 추가


  
# 기본 형식
docker exec [컨테이너이름] [명령어]
# 대화형 모드 (입력 가능)
docker exec -it [컨테이너이름] [명령어]
# 예시
docker exec -it node-container npm init

특징:

  • 기존 실행 중인 컨테이너 필요
  • 메인 프로세스 중단 없이 추가 명령 실행
  • 로그 확인 등에 유용

 

2. docker run - 기본 명령 오버라이드


  
# 기본 형식
docker run [이미지] [새 명령어]
# 예시
docker run -it node npm init

특징:

  • Dockerfile의 CMD 명령 대체
  • 명령 완료 후 컨테이너 종료
  • 일회성 작업에 적합

 

유틸리티 컨테이너 구축 예시

Dockerfile 작성


  
FROM node:14-alpine
WORKDIR /app
ENTRYPOINT ["npm"]

 

빌드 및 실행


  
# 이미지 빌드
docker build -t node-util .
# 바인드 마운트로 실행
docker run -it -v $(pwd):/app node-util init

 

ENTRYPOINT 활용

ENTRYPOINT는 CMD와 유사하지만 중요한 차이가 있습니다:


  
ENTRYPOINT ["npm"] # 기본 명령 고정

특징:

  • docker run 시 지정한 명령이 ENTRYPOINT 뒤에 추가
  • 예: docker run node-util init → npm init 실행
  • 실행 가능한 명령 제한 가능
  • 안전성 향상

 

Docker Compose로 유틸리티 컨테이너 사용


  
version: "3.8"
services:
npm:
build: ./
stdin_open: true
tty: true
volumes:
- ./:/app

 

실행 방법:


  
# 단일 서비스 실행 후 명령 실행
docker-compose run npm init
# 실행 후 컨테이너 자동 제거
docker-compose run --rm npm init

 

 

유틸리티 컨테이너의 장점

  1. 환경 격리: 호스트 시스템 오염 방지
  2. 버전 관리: 프로젝트별 다른 버전 사용 가능
  3. 일관성: 모든 개발자가 동일한 환경 사용
  4. 간편한 설정: 복잡한 설치 과정 없이 필요한 환경 제공

유틸리티 컨테이너는 개발 환경 설정, 빌드 도구, 코드 생성 도구 등 다양한 개발 작업에 활용할 수 있는 강력한 도커 활용 패턴입니다.

 

 

 

 

참고

https://www.udemy.com/course/docker-kubernetes-2022

728x90
반응형

댓글