[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
    반응형

    댓글