Docker 이미지 생성

Docker 이미지를 만드는 방법은 크게 두 가지:

  1. 컨테이너에서 commit: 실행 중인 컨테이너를 수정한 후 새로운 이미지로 저장
  2. Dockerfile 사용: 설정 파일을 통해 이미지 빌드 (권장)

이 문서에서는 첫 번째 방법인 commit을 사용한 이미지 생성 과정을 설명한다.

Commit 을 이용해서 이미지를 생성하는 방법

먼저 Ubuntu 24.04 이미지를 다운로드한다.

docker pull ubuntu:24.04

이미지가 이미 있다면 생략할 수 있다. 확인하려면:

docker images

Ubuntu 24.04 이미지로 컨테이너를 실행하고 접속한다.

docker run --name python3 -it ubuntu:24.04 /bin/bash
  • -it: 인터랙티브 모드로 실행 (터미널과 상호작용 가능)
  • --name: 이름을 지정하면 ID 뿐만 아니라 이름으로도 컨테이너를 참조 가능
  • ubuntu:24.04: 사용할 이미지
  • /bin/bash: 실행할 명령어 (bash 셸)

이제 컨테이너 내부에서 작업할 수 있다. 컨테이너 내부에서 먼저 패키지 목록을 업데이트한다.

apt update

참고: 컨테이너 내부에서는 sudo가 필요 없다. 기본적으로 root 권한으로 실행된다.

Python3와 pip3를 설치한다.

apt install -y python3 python3-pip

설치가 완료되면 확인한다:

python3 --version
pip3 --version

pip3가 설치되었으므로 NumPy를 설치해보자.

Ubuntu 24.04에서는 시스템 패키지와 충돌을 방지하기 위해 pip로 직접 패키지를 설치할 때 externally-managed-environment 에러가 발생할 수 있다.

이를 해결하기 위해 다음 명령어를 실행:

# externally-managed-environment 에러 해결
python3 -m pip config set global.break-system-packages true

설정 후 NumPy를 설치:

pip3 install numpy

설치가 완료되면 확인:

python3 -c "import numpy; print(numpy.__version__)"

설치가 완료되었으므로 컨테이너를 종료한다.

exit

종료된 컨테이너를 새로운 이미지로 저장한다. 먼저 컨테이너 ID를 확인한다:

docker ps -a

마지막으로 실행했던 컨테이너의 ID를 확인한 후 commit한다:

docker commit <컨테이너ID> ubuntu24.04:python3

또는 컨테이너 이름을 사용할 수도 있다:

docker commit <컨테이너이름> ubuntu24.04:python3

이미지 이름 규칙: 이미지명:태그 형식으로 지정한다. 태그를 생략하면 latest가 기본값이다.

새로 만든 이미지가 생성되었는지 확인한다.

docker images

출력 예시:

REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
ubuntu24.04         python3   abc123def456   2 minutes ago   250MB
ubuntu              24.04     xyz789uvw012   1 week ago      100MB

새로 만든 이미지로 컨테이너를 실행하여 Python3, pip3, NumPy가 제대로 설치되었는지 확인한다.

docker run --name test -it ubuntu24.04:python3 /bin/bash

컨테이너 내부에서:

python3 --version
pip3 --version
python3 -c "import numpy; print(numpy.__version__)"

정상적으로 설치되었다면 각각의 버전 정보가 출력된다.

Dockerfile 방식

commit 방식은 간단하지만, Dockerfile을 사용하는 게 더 권장된다:

  • 재현 가능성
  • 버전 관리 가능
  • 자동화 가능
  • 더 명확한 문서화

같은 작업을 Dockerfile로 하면 다음과 같다:

FROM ubuntu:24.04

RUN apt update && \
    apt install -y python3 python3-pip && \
    apt clean && \
    rm -rf /var/lib/apt/lists/*

# externally-managed-environment 에러 해결
RUN python3 -m pip config set global.break-system-packages true

# NumPy 설치
RUN pip3 install numpy

CMD ["/bin/bash"]

빌드:

docker build -t ubuntu24.04:python3 .

이 방식이 더 권장되는 방법이다.