본문 바로가기

카테고리 없음

기존 작업 컨테이너의 서버 이사하기

연구실 서버를 사용 중인데 연구실 사정 상 기존 서버에서 다른 서버에서 작업을 하게 되었어요..

아직 서버를 다루는 게 익숙치 않아서 차근차근 지피티와 알아보았습니다 :)

 

현재 내 상황 

서버4번에 있는 soojin container에서 myenv conda 가상환경을 바탕으로 작업 진행 중

=> 서버 5번으로 옮기기 

image를 전체로 옮기거나 훨씬 더 간편한 방법이 있을 수 있지만 저는 서버4번에서 새로운 container를 파서 기존의 myenv conda 가상환경을 갖고오고 다른 데이터셋이나 파일들도 갖고오기로 했어요 

 

[서버5번 container]
    ↓ (export)
[서버5번 host /home/soojin/myenv.yml]
    ↓ (rsync)
[서버4번 host /home/soojinhwang/myenv.yml]
    ↓ (docker cp)
[서버4번 container /envs/myenv.yml]
    ↓ (conda env create)
[서버5번 container /your/files/*]
    ↓ (docker cp or tar)
[서버5번 host /home/soojin/files/]
    ↓ (rsync)
[서버4번 host /home/soojinhwang/files/]
    ↓ (docker cp)
[서버4번 container /your/target/dir/]
[완료 ✅]

 

 

1. 기존에 사용하고 있는 conda 환경 container에 저장하기 (서버5번)

- 내보낼 환경 activate 하기

- 현재 환경 export로 내보내기

# 현재 활성화된 환경 기준으로 export
conda activate myenv
conda env export > myenv.yml

 

2. 서버5번 container -> 서버5번 host  복사

# container ID 확인
docker ps
# 파일 복사
docker cp <container_id>:/path/in/container/myenv.yml /home/soojin/

docker ps를 통해 container id를 확인할 수 있어요. 

그리고 그 뒤 내가 원하는 파일인 myenv.yml의 경로는 container에 직접 들어가 경로를 확인하시면 됩니다!

그리고 그 뒤엔 서버4번에서 저장할 경로를 넣어주시면 돼요. 이 경로는 서버4번에 들어가 pwd 명령어를 통해 확인할 수 있어요. 

이렇게!

 

 

3. 서버5번 -> 서버4번

* 서버5번에서 보내주는 것이기 때문에 서버5번에서 진행해야 해요

rsync -avz /home/soojin/sait.yml soojinhwang@서버4번IP:/home/soojinhwang/

 

(rsync는 remote syncronize의 약자로 파일 전송하는 오픈소스 유틸리티입니다!)

rsync -avz (서버5번에 있는 내 yaml 환경 파일 경로)  (서버4번주소):(서버4번에 저장할 경로)

 

여기까지 진행을 했으면 서버4번에 내가 지정한 경로에 환경(yaml)파일이 들어와있을거에요!

이제 이렇게 갖고온 yaml 파일을 이용해서 새로운 환경을 만들어봅시다.

 

- 서버4번 IP 확인하는 법

hostname -I

 

 

4. 서버4번에서 Container 생성 

새로운 환경을 만들기 전에 우선 우리가 작업하고자 하는 container를 먼저 만들거에요. 

이건 각자 생성하는 방법에 따라 진행하면 될 것 같아요

(makefile, make up) 

 

5. 서버4번에서 환경 만들기

각자 만든 container에서 우리가 서버5번에서 사용한 환경을 그대로 사용하기 위해 갖고온 yaml 파일을 위해 만들어줍니다. 우선 container에 들어가줍니다.

conda env create -f /home/user/myenv.yml
conda activate myenv

conda create를 하고 이 때 우리가 갖고있는 환경파일의 경로를 알려줍니다.

그 다음 환경을 실행해주면 끝! (이 때 저는 저장한 환경 파일 이름과 새로 만들 환경 이름을 같게 해서 따로 이름 설정은 하지 않았어요) 

이 때 바로 conda activate을 하면 실행이 안될수도 있으니 저는 간단하게 터미널을 껐다가 다시 실행해서 conda activate을 해줍니다. 

 

 

6. 파일 옮기기 (폴더 통째로) 

서버에 없다면 container에서 host로 복사해주기 

docker cp <container_id>:/path/in/container/ /home/soojin/files/

docker cp (내 container id) : (container에서 갖고올 폴더 경로) (server 즉 host에서 복사할 경로)

 

 

7. 폴더 통째로 서버 5번 host -> 서버 4번 container

* 이거역시 서버5번에서 진행. 위에서 yaml 보내준 것과 동일하게 진행 

rsync -avz /home/soojin/files/ soojinhwang@서버4번IP:/home/soojinhwang/files/

rsync -avz (서버5번에서 보낼 내 폴더 경로) (서버4번주소):(서버4번에서 붙여넣을 경로)

 

 

전 여기서 바로 container내의 폴더로 이동해줬어요!

 

이후 서버4번 container 실행 후 폴더들을 확인해보면 제대로 들어온 걸 확인할 수 있습니다~