본문 바로가기

Docker

Docker Volume 연결하기

docker run -d -it \
--name <container_name> \
-v "/path/to/project:/root/project" \
-e PYTHONPATH=/root/project \
<image_name>:<tag>​
docker commit --pause <container_name> <image_name>:<tag>

Docker 내부의 파일들과 외부의 파일을 연결하기 위해서는 bind mount를 통해 저장소를 이어줘야 한다.

방법은 간단하다.

docker run -d -it --memory="100g" --memory-swap="200g" --memory-reservation="20g" --gpus all --name dim --shm-size=40g -v "{내 컴퓨터의 경로}:{Docker 내부 경로}" -e PYTHONPATH=/root rnltls97/dim_diffusionmamba:latest

와 같이, 내 컴퓨터의 경로와 docker 내부 경로를 연결해주자!

이렇게 한다면, 내 컴퓨터에서 vscode나 다른 코드 에디터를 통해 코드를 수정하고, 바로 docker 컨테이너에서 실행할 수 있다!

 

하지만 이미 container를 만들었다면, 새로운 volume을 연결할 수는 없다.

그렇기에, 다음과 같은 방법이 필요하다!

 

1. 실행중인 container를 image로 commit한다.

2. 새롭게 commit한 image를 통해 새 container를 만든다.

 

먼저 docker image ls 혹은 docker images -a 를 통해 보유한 image 목록을 확인하고,

docker ps -a를 통해 현재 실행중인 container와 중지된 container 모두 나열한다.

이렇게 한다면, 이전 container에서 작업해둔 모든 것이 전부 승계된 새 container를 만들 수 있다.

 

이제 새롭게 볼륨을 추가할 container를 image로 commit하자.

본인은 816c container를 image로 새롭게 commit하고, volume을 추가해 run 해줄 계획이다.

 

1. --puase flag로 컨테이너 stop하지 않고 commit하기

docker commit --pause <container_name> <image_name>:<tag>

위와 같이 진행할 수도 있다.

하지만 container를 다시 실행할 이유가 없다면, docker stop <container_name> 한 이후 commit을 진행해도 무방하다!

 

2. docker tag로 commit한 이미지 latest로 관리하기

docker tag <image_name>:<tag> <image_name>:latest

 

3. 저장된 새 image로 run하며, 원하는 Volume 다시 잘 연결하기

docker run -d -it \
--name <container_name> \
-v "/path/to/project:/root/project" \
-e PYTHONPATH=/root/project \
<image_name>:<tag>

적당히 연결할 volume을 여러개 나열하면, 여러 volume을 연결할 수 있다!

이렇게 기존에 사용하던 컨테이너에서 새롭게 volume을 연결했다.

 

참고: https://3days-100times.tistory.com/26

'Docker' 카테고리의 다른 글

Docker로 Diffusion Mamba 학습하기  (1) 2024.12.04
Docker로 Mamba 시작하기  (0) 2024.12.03