Docker와 GitHub를 이용한 소프트웨어 연구 환경 구축에서 Docker 프로젝트 템플릿에 대해 소개해드렸습니다. 리눅스 서버에서 프로젝트 템플릿을 이용해 만든 Docker 컨테이너를 실행하고, 컨테이너 내에서 Jupyter lab/notebook 또는 tensorboard를 실행한 후 데스크탑 PC의 웹브라우저를 이용해 접속하는 방법을 살펴보겠습니다. 아래 명령들을 실행하기 전에 먼저 컨테이너를 만들고(build.sh
) 실행해주세요(run.sh
).
Jupyter lab/notebook
서버의 프로젝트 내 docker 디렉토리에서 다음 명령을 실행합니다.
$ ./exec.sh lab
(또는 ./exec.sh notebook
)
위 명령을 실행하면 jupyter lab/notebook이 background로 실행됩니다. 실제로는 다음 명령이 실행됩니다.
$ jupyter lab[notebook] --no-browser --ip=0.0.0.0 --NotebookApp.token=****
위에서 ****는 접속 비밀번호로, Env.sh 파일에서 지정해줍니다.
컨테이너의 jupyter port, tensorboard port와 서버의 해당 port는 컨테이너 실행시 연결된 상태이므로 이제 데스크탑 PC의 port를 서버의 해당 port로 연결하면 됩니다. 참고로, Port 번호는 Env.sh
파일에서 바꿀 수 있습니다.
데스크탑 PC에서 서버로 연결하기 위해 웹브라우저에서 server_ip:8888 주소로 접속하면 됩니다. 만약, localhost 주소로 사용하고 싶다면 다음 ssh tunneling 명령을 실행합니다. 리눅스나 MacOS의 경우 터미널에서, 윈도우즈의 경우 PowerShell에서 실행하면 됩니다.
$ ssh -N -L 8888:localhost:8888 your_id@server_ip
위 명령을 통해 서버와 데스크탑 PC의 port를 연결했다면 데스크탑 웹브라우저에서 localhost:8888
주소로 서버 컨테이너의 jupyter lab/notebook에 접속하여 사용할 수 있습니다.
TensorBoard
텐서보드도 사용할 수 있습니다. 텐서보드 파일이 src/logs
디렉토리에 있을 경우 docker 컨테이너 내에서 src 디렉토리로 이동한 후 tensorboard를 실행합니다.
$ ./exec.sh # 컨테이너 내 터미널 접속$ cd src
$ tensorboard --bind_all --logdir=logs
위 명령을 실행한 후에는 tensorboard port를 이용하여 앞에서와 같이 웹브라우저에서 server_ip:6006으로 접속하던가 ssh tunneling 명령을 실행합니다.
$ ssh -N -L 6006:localhost:6006 your_id@server_ip
이제 데스크탑 웹브라우저에서 localhost:6006
주소로 서버 컨테이너에서 실행한 tensborboard에 접속할 수 있습니다.
참고로, Jupyter lab/notebook과 TensorBoard를 동시에 사용한다면 다음과 같이 한 번에 연결할 수도 있습니다.
$ ssh -N
-L 8888:localhost:8888
-L 6006:localhost:6006 your_id@server_ip