티스토리 뷰
728x90
반응형
Docker 컨테이너가 실행 중일 때 패키지를 추가 설치하려고 한다면 다음과 같이 진행하면 된다.
1. docker exec 명령어로 컨테이너 접근
- bash 쉘에 접근한다.
# 백그라운드에서 실행
docker-compose up -d
# app 컨테이너 쉘에 접근
docker-compose exec app bash
(참고) [Docker] 실행 중인 컨테이너 쉘(shell / 콘솔)에 접근하기
2. 패키지 설치
- 컨테이너 쉘에 접근 후, 필요한 패키지를 설치한다.
pip install <package_name>
3. 작업 완료 후 변경 사항 유지하기
- 컨테이너에 직접 패키지를 설치하면 해당 컨테이너가 종료될 때 변경 사항이 사라진다.
- 만약 영구적으로 유지하려면 두 가지 방법이 있다.
1) Dockerfile을 사용한 이미지 업데이트
- 가장 좋은 방법으로 Dockerfile을 업데이트하여 필요 패키지를 명시적으로 추가하는 방법이다.
- 컨테이너 쉘에서 현재 환경의 패키지 목록을 requirements.txt에 반영한다.
pip freeze > requirements.txt
- 만약 Dockerfile에 requirements.txt 설치 명령어가 없다면 추가한다. (필요 시)
RUN pip install --no-cache-dir -r requirements.txt
- 이미지를 재빌드하고 컨테이너를 실행한다.
docker-compose up --build
2) docker commit을 이용한 새로운 이미지 저장
- docker commit 명령어를 통해 현재 컨테이너 상태를 이미지로 저장하는 방법이다.
- exit을 통해 쉘을 종료하고 컨테이너를 커밋한다.
docker commit [OPTIONS] <container_id> <repository:tag>
# 예시
docker commit -m "Updated image with new packages" -a "yourname" <container_id> myapp:latest
- 이후 새로운 컨테이너를 실행한다.
docker run myapp:latest
- 혹은 docker-compose.yaml 파일이 아래와 같이 되어 있다면, 재빌드하고 컨테이너를 실행한다.
# docker-compose.yaml 일부
services:
app:
image: myapp:latest # 커밋한 이미지를 사용
docker-compose up --build
(추가) Docker Hub 에 이미지 푸시
docker tag myapp:latest <your_dockerhub_username>/myapp:latest
docker push <your_dockerhub_username>/myapp:latest
728x90
반응형
'Study > Docker' 카테고리의 다른 글
[Docker] docker-compose down 시 데이터 손실 방지 (0) | 2024.10.27 |
---|---|
[Docker] 실행 중인 컨테이너 쉘(shell / 콘솔)에 접근하기 (0) | 2024.10.25 |
[Docker] Docker Compose 서비스 종료 및 리소스 삭제(down) (1) | 2024.10.25 |
Docker 실행하면서 마주한 에러 모음 (2) | 2024.10.25 |
[Docker] Docker Compose로 Django 프로젝트 환경 구성 (0) | 2024.10.25 |
댓글