학교에서 제공해주는 서버가 있는데 전에는 ssh를 이용해서 원격 연결을 하여 사용했다.
하지만 서버 사용 방식이 Docker를 이용한 방식으로 변경되었다.
Portainer라는 Docker web UI를 사용하여 서버에 접속할 수 있다.
우선 Portainer를 사용하기 위해서는 Docker의 Container와 Image 개념에 대해서 알아야한다.
위의 내용은 여기에 아주 잘 설명되어있다. 이 포스팅에서 terminal을 이용해서 컨테이너를 만들고, 이미지를 다운받는 것 등에 대한 설명이 잘 되어있는데 Portainer를 이용하면, terminal에서 이와 같은 명령어를 굳이 실행하지 않아도 된다. Portainer 내에 UI를 이용해서 바로 Container를 만들고, Image 다운로드를 할 수 있다.
1. 컨테이너 만들기 및 이미지 연결

위의 버튼을 누르면 아래 그림과 같은 화면이 뜨게 되는데

Name에는 사용할 컨테이너의 이름을 정해주면 되고,
빨간 박스쳐진 Image 부분 옆에 우리가 사용할 Image의 이름을 가져오면된다.
(나는 이미지를 가져오는 부분에서 애를 먹었는데)
어려운 건 아니고, Docker의 이미지는 Docker hub나 nvidia 사이트에서 다운 받을 수 있다. Docker hub에는 Official Image 말고도, 사용자들이 만들어놓은 다양한 Image가 있으니, 각자 필요한 환경이 잘 담겨있는 Image를 사용하면 된다.
예를 들어, 나는 PyTorch를 사용해서 nvidia 사이트에서 다운을 받았는데,

그냥 위의 빨간 박스 부분을 복사해서 [docker.io] 칸에 붙여넣기만 하면 된다.
2. 사용할 Port 설정하기
그리고 그림 2의 두번째 빨간 박스를 누르게 되면, 그 아래와 같이 port를 설정할 수 있는 창이 나오는데
나는 host port 와 container port를 같게 설정하였다.
위의 칸에는 SSH port를 입력해주고 (e.g. host:22 --> container:22)
아래 칸에는 Jupyter에 사용할 port 번호를 입력해준다. (e.g. host:8888 / container: 8888)
위의 숫자는 꼭 저게 아니어도 대충 비슷하게 아무 숫자나 쳐주면 되는 것 같다.
3. 실행 옵션 설정
그 다음 아래로 내리다보면, 그림 4와 같이 Console을 설정하는 표시 (그림 4-1번)가 있는데
Interactive는 표준입력으로 stdin을 활성화하며, 컨테이너와 연결되어있지 않더라도 표준 입력을 유지하고
TTY는 TTY모드를 사용한다고한다. bash를 사용하려면 이 옵션을 설정해야한다.
둘의 차이를 나도 정확히는 모르겠으나, 그냥 둘 다 사용하는 Interactive & TTY를 선택하자.

4. 환경 변수 설정 & Runtime 설정
그림 4에서 Env(그림 4-2번)를 누르면, 사용할 GPU를 설정할 수 있다.

1번을 눌러 environment variable을 추가한다.
예를 들어, GPU 0,1,2,3 네 개 중 2,3번 두 개를 사용하고 싶으면
[name] NVIDIA_VISIBLE_DEVICES [value]2,3을 입력해주면된다.
5. Runtime 설정
그 다음 Runtime & Resource 버튼을 눌러, nvidia로 설정해주면 된다.

그 다음 중간 중간 부분에 존재하는 [Deploy the container] 버튼을 누르면 컨테이너는 생성된다.
6. 컨테이너 접속

그림 7에 있는 터미널 아이콘을 누르고 [Connect]를 누르면 컨테이너에 접속이 완료된다.
+추가로+
나도 Docker를 처음 써봤던 거여서 익숙치 않은 환경때문에 애를 먹었다.
screen을 사용하기 위해서 apt-get screen을 하려했는데 안되서 당황했었는데 이 문제는 이 포스팅을 참고해서 해결해서 잘 사용 중에 있다 ^~^
'기술 정보' 카테고리의 다른 글
| [Tensorflow] CNN만들기 - tf.keras.Sequential() (0) | 2023.10.02 |
|---|---|
| [Tensorflow] NN 설계를 위한 tensorflow 기본 함수들 (0) | 2023.09.19 |
| [Colab] Drive mount 하는 법, 경로 설정하는 법 (0) | 2023.09.19 |
| [scikit-learn] feature_extraction.text / CountVectorizer (0) | 2023.09.11 |
| [numpy] np.dot() / np.outer() / np.multiply() 정리 (0) | 2023.09.06 |