Docker는 개발자들이 소프트웨어를 패키징하고 배포하는 방식을 혁신적으로 변화시킨 도구입니다.
그 중심에는 바로 Docker 이미지가 있습니다.
이 글에서는 Docker 이미지를 처음 접하는 초보자들이 쉽게 이해할 수 있도록 개념부터 생성 방법, 그리고 이미지 레지스트리까지 단계별로 설명합니다.
1. Docker 이미지란?
1.1 Docker 이미지의 개념
Docker 이미지는 애플리케이션과 그 애플리케이션을 실행하는 데 필요한 모든 요소(코드, 런타임, 라이브러리, 환경 변수 등)를 하나의 패키지로 묶은 것입니다.
쉽게 말해, 특정 애플리케이션을 실행하기 위해 필요한 모든 요소가 포함된 템플릿이라고 생각하면 됩니다.
Docker 이미지는 불변이며, 읽기 전용으로 저장됩니다. 이를 기반으로 컨테이너가 생성되며, 이 컨테이너는 실제로 실행되는 애플리케이션 인스턴스입니다.
1.2 이미지와 컨테이너의 차이
- 이미지: 애플리케이션을 실행하기 위한 청사진 (설계도)
- 컨테이너: 이미지에 기반하여 실제로 실행된 애플리케이션 (완성된 집)
이미지는 정적이며, 컨테이너는 동적입니다. 하나의 이미지에서 여러 개의 컨테이너를 생성할 수 있습니다.
2. Docker 이미지 생성 방법
Docker 이미지는 보통 Dockerfile이라는 파일을 통해 생성됩니다. Dockerfile은 텍스트 파일로, 이미지 생성에 필요한 명령어들이 순서대로 작성되어 있습니다.
2.1 Dockerfile의 구조
# 베이스 이미지 지정
FROM ubuntu:latest
# 작업 디렉토리 설정
WORKDIR /app
# 필요 패키지 설치
RUN apt-get update && apt-get install -y python3
# 애플리케이션 코드 복사
COPY . /app
# 실행 명령어 지정
CMD ["python3", "app.py"]
- FROM: 이미지를 기반으로 사용할 베이스 이미지를 지정합니다. 예: ubuntu:latest.
- WORKDIR: 작업 디렉토리를 설정합니다.
- RUN: 이미지 생성 시 실행할 명령어입니다. 주로 패키지 설치에 사용됩니다.
- COPY: 로컬 파일을 이미지 안으로 복사합니다.
- CMD: 컨테이너가 시작될 때 실행할 기본 명령어를 지정합니다.
2.2 Docker 이미지 빌드하기
Dockerfile을 작성한 후, 이를 기반으로 이미지를 생성할 수 있습니다. 이 과정은 "이미지를 빌드한다"라고 표현합니다.
docker build -t my-python-app .
- docker build: 이미지를 빌드하는 명령어입니다.
- -t my-python-app: 생성될 이미지에 my-python-app이라는 이름을 지정합니다.
- .: 현재 디렉토리에 있는 Dockerfile을 사용하겠다는 의미입니다.
이미지 빌드가 완료되면 my-python-app이라는 이름의 이미지가 생성됩니다. 이 이미지는 나중에 컨테이너를 생성할 때 사용됩니다.
3. Docker 이미지 레지스트리란?
3.1 Docker 이미지 레지스트리 개념
Docker 이미지 레지스트리는 빌드된 Docker 이미지를 저장하고 관리하는 중앙 저장소입니다. 가장 대표적인 Docker 이미지 레지스트리는 Docker Hub입니다. 레지스트리는 다음과 같은 역할을 합니다.
- 저장: 빌드한 이미지를 저장할 수 있습니다.
- 공유: 이미지를 다른 사람들과 공유할 수 있습니다.
- 배포: 이미지를 다른 서버나 개발 환경으로 배포할 수 있습니다.
3.2 Docker 이미지 푸시하기
이미지를 빌드한 후, 이를 Docker Hub와 같은 레지스트리에 업로드(푸시)할 수 있습니다.
1. Docker Hub 로그인
docker login
2. 이미지에 태그 추가
docker tag my-python-app username/my-python-app:latest
- username은 Docker Hub의 사용자명입니다.
- latest는 태그로, 이미지 버전을 나타냅니다.
3. 이미지 푸시
docker push username/my-python-app:latest
- 이 명령어를 통해 이미지를 Docker Hub로 업로드할 수 있습니다.
3.3 Docker 이미지 가져오기 (Pull)
레지스트리에 저장된 이미지를 다른 환경에서 사용하려면, 해당 이미지를 로컬로 가져와야 합니다. 이를 "이미지를 풀(pull)한다"라고 표현합니다.
docker pull username/my-python-app:latest
이 명령어를 통해 Docker Hub에 저장된 이미지를 로컬 환경으로 다운로드할 수 있습니다.
Docker 이미지는 애플리케이션을 컨테이너화하여 어디서나 일관된 환경에서 실행할 수 있도록 도와주는 강력한 도구입니다.
이번 글을 통해 Docker 이미지의 개념과 생성 방법, 그리고 이미지 레지스트리에 대해 이해할 수 있었기를 바랍니다.
Docker를 활용해 개발 환경을 더욱 효율적으로 관리해보세요!
구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Docker' 카테고리의 다른 글
Docker 이미지와 컨테이너/ 명령어 사용법: docker run, docker ps, docker stop, docker rm (2) | 2024.09.10 |
---|---|
Docker 이미지와 컨테이너/ Docker 컨테이너 개념부터 실행 및 관리 (1) | 2024.09.10 |
Docker 설치 및 설정/ Docker Desktop 설치 후 초기 설정 (0) | 2024.09.10 |
Docker 설치 및 설정/ Docker 설치 방법: Windows, macOS, Linux에 따른 설치 과정 (0) | 2024.09.10 |
Docker란 무엇인가?/ Docker의 아키텍처: Docker 엔진, 이미지, 컨테이너, 레지스트리 (2) | 2024.09.08 |