2 분 소요

1. Docker란?

1) 한줄 설명

  • 도커(Docker)는 애플리케이션을 컨테이너라는 격리된 환경에서 실행할 수 있게 해주는 플랫폼입니다. 이를 통해 개발자는 다양한 환경에서 일관된 방식으로 애플리케이션을 구축, 배포 및 실행할 수 있습니다.

2) 구성요소

(1) 도커 이미지 (Docker Image)

  • 정의 :
    • 컨테이너를 생성하기 위한 템플릿입니다.
    • 애플리케이션 실행에 필요한 모든 것(코드, 라이브러리, 설정 등)을 포함하는 읽기 전용 파일입니다.
    • 가상 머신에서 사용하는 ISO 파일과 유사한 개념입니다.
  • 특징 :
    • 여러 개의 레이어(layer)로 구성된 바이너리 파일입니다.
    • 컨테이너 생성 및 실행 시 읽기 전용으로 사용됩니다.
    • Dockerfile이라는 설정 파일을 통해 이미지를 생성합니다.

(2) 도커 컨테이너 (Docker Container)

  • 정의 :
    • 도커 이미지를 기반으로 생성된 실행 가능한 인스턴스입니다.
    • 이미지에 정의된 환경에서 실제 애플리케이션이 실행되는 격리된 공간입니다.
    • 가상 머신보다 가볍고 빠르며, 시스템 자원을 효율적으로 사용합니다.
  • 특징 :
    • 이미지를 실행한 상태이며, 애플리케이션과 필요한 라이브러리, 설정 파일 등을 포함합니다.
    • 호스트 OS와 격리되어 독립적인 환경을 제공합니다.
    • 컨테이너 내부의 변경 사항은 컨테이너가 삭제되면 사라집니다. (볼륨을 사용하여 영구 저장 가능)

3) 사용법

(1) 이미지 생성 (Dockerfile 작성 및 빌드)

  • Dockerfile 작성 :
    • 애플리케이션 실행에 필요한 운영체제, 라이브러리, 소스 코드 등을 정의한 설정 파일입니다.
    • FROM, RUN, COPY, CMD 등의 명령어를 사용하여 이미지 레이어를 구성합니다.
  • 이미지 빌드:
    • docker build 명령어를 사용하여 Dockerfile을 기반으로 이미지를 생성합니다.
    • 생성된 이미지는 도커 허브 또는 로컬 레지스트리에 저장됩니다.
  • 예시 :
    • Dockerfile 설명
      1. FROM : python 3.9버전 공식 이미지 가져오기(From 파이썬 도커 허브)
      2. WORKDIR : 작업 디렉토리 지정
      3. COPY : 로컬의 requirements.txt 파일을 code폴더 내 복사
      4. RUN : 이미지 빌드 과정에서 이뤄지는 패키지 설치, 파일 복사, 환경 설정 등 수행
        • 이때, pip, git 등 FROM을 통해 가져오는 base Image에 세팅 되어 있어야 사용 가능
      5. CMD : 도커 컨테이너 실행 시, 명령어 실행
        • 예시는 uvicorn 라이브러리를 활용해 80포트로 배포하는 명령어
    • 빌드 예제 : docker build -t my_image:ver0.1 .
      • -t : “my_image”라는 이미지 이름과 “ver0.1” 이라는 태그를 붙임(태그는 버전 구분)
      • 마지막 . 은 해당 경로에 존재하는 dockerfile를 빌드하라는 의미
          FROM python:3.9
          WORKDIR /code
          COPY ./requirements.txt /code/requirements.txt
          RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
          RUN git clone https://github.com/NeatyNut/ipsi_rag.git
          CMD ["uvicorn", "ipsi_rag.main:app", "--host", "0.0.0.0", "--port", "8000"]
        

(2) 컨테이너 실행 (이미지 기반 컨테이너 생성 및 실행)

  • 이미지 다운로드:
    • docker pull 명령어를 사용하여 도커 허브 또는 레지스트리에서 이미지를 다운로드합니다.
  • 컨테이너 생성 및 실행:
    • docker run 명령어를 사용하여 이미지를 기반으로 컨테이너를 생성하고 실행합니다.
    • -p 옵션으로 호스트와 컨테이너의 포트를 연결하고, -v 옵션으로 볼륨을 마운트할 수 있습니다.
    • docker compose로
  • 컨테이너 관리:
    • docker ps 명령어로 실행 중인 컨테이너 목록을 확인하고, docker stop 명령어로 컨테이너를 중지합니다.
    • docker rm 명령어로 컨테이너를 삭제하고, docker exec 명령어로 실행 중인 컨테이너에 접속하여 명령어를 실행할 수 있습니다.

(3) 주요 명령어

  • docker build: 이미지를 빌드합니다.
  • docker pull: 이미지를 다운로드합니다.
  • docker run: 컨테이너를 생성하고 실행합니다.
  • docker ps: 실행 중인 컨테이너 목록을 표시합니다.
  • docker stop: 컨테이너를 중지합니다.
  • docker rm: 컨테이너를 삭제합니다.
  • docker images: 이미지 목록을 표시합니다.
  • docker rimi: 이미지를 삭제합니다.

4) 도커 세팅하기 - 윈도우 기준

(1) 필수 환경 설정

  • Hyper-V / WSL2(Windows Subsystem Linux) 세팅
    • Why : Hyper-V는 가상화 환경을 제공하고, WSL2는 리눅스 커널 통합 및 성능 향상을 담당하여, 이 두 가지 기술은 도커 데스크톱이 윈도우에서 리눅스 컨테이너를 효율적으로 실행하기 위한 필수적인 요소
    • 설정법 :
      • 윈도우 화면 하단의 Windows 기능 켜기/끄기
        • Linux용 Windows 하위 시스템 체크
        • 가상 머신 플랫폼 체크 image.png

(2) 도커 데스크탑 설치

댓글남기기