Docker 이미지를 만드는 방법은 크게 두 가지:
- 컨테이너에서 commit: 실행 중인 컨테이너를 수정한 후 새로운 이미지로 저장
- 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 .
이 방식이 더 권장되는 방법이다.