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을 연결했다.
'Docker' 카테고리의 다른 글
Docker로 Diffusion Mamba 학습하기 (1) | 2024.12.04 |
---|---|
Docker로 Mamba 시작하기 (0) | 2024.12.03 |