CodeGym /행동 /Docker SELF /Docker Images 소개

Docker Images 소개

Docker SELF
레벨 13 , 레슨 0
사용 가능

1.1 Docker Images 기본

Docker Images (도커 이미지)는 Docker 컨테이너를 위한 템플릿이야. 이 안에 애플리케이션 실행에 필요한 모든 게 들어있어: 코드, 라이브러리, 의존성, 도구, 설정 파일 등등. Docker Images가 뭐고, 이게 어떻게 구조화되어 있는지 이해하는 건 Docker를 효율적으로 사용하는 데 정말 중요해.

Docker Image변경 불가능한 템플릿이고, 이걸로 컨테이너를 만들어. 이 안에는 격리된 환경에서 애플리케이션을 실행하기 위한 모든 구성 요소가 포함되어 있어. 컨테이너를 실행하면 Docker가 이미지를 인스턴스화하고 실행해줘.

Docker Images의 주요 특징:

  1. 변경 불가능함: Docker Images는 변경이 불가능해. 컨테이너 안에서 일어난 어떤 수정도 원본 이미지에는 영향을 주지 않아. 내용을 바꾸려면 새로운 이미지를 만들어야 돼.
  2. 레이어 구조: Docker Images는 여러 레이어로 구성돼 있어. 각 레이어는 이전 것과의 차이를 나타내. 이를 통해 레이어를 재사용해서 공간을 효율적으로 쓸 수 있어.
  3. 식별 가능성: 각 이미지는 고유 ID(SHA256 해시)를 가지고 있고, 하나 이상 태그를 가질 수도 있어. 이게 이미지 버전을 관리하는 데 더 쉽게 만들어 줘.

Docker Images의 구조:

Docker Images는 레이어 구조를 가지고 있어. 각 레이어는 파일 시스템이야. 이 레이어들은 Docker 캐시에 저장되고 다른 이미지들에 의해 재사용될 수 있어. 레이어 구조는 Docker Images를 가볍고 효율적으로 만들어 줘. 예를 들어, 첫 번째 레이어는 운영 체제, 두 번째는 Python, 세 번째는 너의 애플리케이션일 수 있어.

Docker Images 구조의 주요 구성 요소:

  1. 기본 레이어 (Base Layer): 이미지의 초기 레이어로, 종종 다른 이미지를 만드는 데 기반으로 사용돼. 예를 들어, Ubuntu나 Alpine Linux 같은 최소한의 운영 체제 버전일 수 있어.
  2. 중간 레이어 (Intermediate Layers): Dockerfile에서 실행된 명령들(예: 패키지 설치, 파일 복사 등등)에 따라 생성돼. 각 레이어는 이전 레이어에 대한 변경 사항을 추가해.
  3. 최종 레이어 (Final Layer): CMD, ENTRYPOINT 명령 또는 컨테이너 내부의 변경 사항 기반으로 만들어지는 마지막 레이어는 "컨테이너" 레이어라고 불려. 이 레이어는 임시적이며, 컨테이너 실행 중에만 존재해.

1.2 Docker Images 레이어 작동 방식

Docker 이미지의 각 레이어는 이전 레이어에 대한 변경 집합입니다. Docker가 이미지를 생성할 때, Dockerfile의 각 명령어를 실행하고 변경 사항마다 새로운 레이어를 추가합니다.

레이어 생성 예:

  1. 기본 이미지: 기본 이미지인 ubuntu:20.04에서 시작합니다. 이게 첫 번째 레이어가 될 거에요.
  2. 패키지 설치: RUN apt-get update && apt-get install -y python3 명령은 Python 설치가 포함된 새 레이어를 생성합니다.
  3. 파일 복사: COPY . /app 명령은 애플리케이션 파일을 새로운 레이어에 추가합니다.
  4. 작업 디렉토리 설정: WORKDIR /app 명령은 이후 명령을 위한 작업 디렉토리를 설정하는 레이어를 생성합니다.

레이어 사용의 장점:

  1. 재사용성: 레이어는 다른 이미지에서 재사용될 수 있어요. 예를 들어, 두 이미지가 동일한 기본 레이어를 사용한다면 Docker는 그것을 한 번만 다운로드해서 공간과 시간을 절약합니다.
  2. 캐싱: Docker는 레이어를 캐싱하여 이미지 빌드 프로세스를 빠르게 만듭니다. 레이어가 변경되지 않았다면 Docker는 캐시에서 가져와서 새로 빌드하지 않아요.
  3. 모듈화: 레이어 구조는 이미지를 모듈 방식으로 개발할 수 있도록 합니다. 특정 레이어를 업데이트하거나 수정할 수 있으며, 전체 이미지를 건드릴 필요가 없습니다.

Docker Images 식별 및 태그 정의:

각 Docker Image는 이미지와 모든 레이어 내용을 기반으로 생성된 고유한 해시(SHA256)로 식별됩니다. Docker Images는 관리와 버전 관리를 쉽게 하기 위해 태그를 사용할 수도 있어요.

이미지 식별 예:

아래 명령은 시스템에 있는 모든 이미지 목록을 표시합니다. 여기에는 저장소, 태그, ID 및 크기가 포함됩니다:

Terminal

docker images

1.3 Docker Images 작업

Docker는 이미지를 작업하려고 여러 명령어를 제공해. 주요 명령어들은 다음과 같아:

  • 이미지 생성: docker build
  • 이미지에서 컨테이너 실행: docker run
  • 이미지 목록: docker images
  • 이미지 삭제: docker rmi
  • Docker Hub에서 이미지 검색: docker search
  • Docker Hub에서 이미지 다운로드: docker pull
  • Docker Hub로 이미지 업로드: docker push

Docker Image 생성 및 사용 예시:

1. Dockerfile 생성:

dockerfile

# Ubuntu 기본 이미지를 사용
FROM ubuntu:20.04

# Python 설치
RUN apt-get update && apt-get install -y python3

# 애플리케이션 파일을 컨테이너에 복사
COPY . /app

# 작업 디렉토리 설정
WORKDIR /app

# 애플리케이션 실행 명령 설정
CMD ["python3", "app.py"]

2. 이미지 빌드:

다음 명령은 현재 디렉토리의 Dockerfile을 사용하여 my_python_app라는 이름의 이미지를 생성할 거야:

Terminal

docker build -t my_python_app .

3. 이미지에서 컨테이너 실행:

다음 명령을 사용하여 생성된 이미지 my_python_app에서 컨테이너를 백그라운드에서 실행할 수 있어:

Terminal

docker run -d my_python_app
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION