Docker Image에서 개발 중인 코드를 사용하기

  전에 Docker를 이용해서 비교적 간편하게 Tensorflow GPU를 사용하는 법을 공유드렸습니다 (Docker를 이용해서 편리하게 GPU Tensorflow를 사용하자). Docker를 이용하면 Performance에 영향은 거의 없으면서, 환경을 독립적으로 유지할 수 있다는 장점이 있습니다. 이런 점은 배포 시에는 아주 좋지만 개발 시에는 치명적인 문제점이 있는데, 바로 코드를 변경할 때마다 Docker Image를 새로 빌드해야 한다는 점입니다. 간단한 방법을 통해서 이 문제를 해결할 수 있습니다.

 

  Docker를 이용해서 편리하게 GPU Tensorflow를 사용하자를 따라서 설정을 했다고 가정하겠습니다. 그럼 아래 명령으로 Docker의 Bash shell으로 진입할 수 있습니다.

$ docker run --gpus all -it --rm -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter bash

  당연히 현재 Docker Image 바깥에서 작업 중이던 코드는 반영이 되지 않았을 거고요. 대신에 아래 명령으로 Shell으로 진입을 해보겠습니다.

$ docker run --gpus all -it --rm -p 8888:8888 -v /home/ceongjeein/Workspace:/code tensorflow/tensorflow:latest-gpu-py3-jupyter bash

  -v 명령은 Host 머신의 특정 디렉터리 (또는 볼륨)을 Docker Image 내의 특정 경로에 mapping 해주는 역할입니다. 이 경우에는 Host 머신의 /home/ceongjeein/Workspace가 Docker Image 내의 /code에 매핑됩니다. 즉, /home/ceongjeein/Workspace 내에서 작업한 내용이 실시간으로 Docker Image 내의 /code에 반영이 됩니다. 코드가 바뀔 때마다 일일이 Docker Image를 새로 만들지 않아도 됩니다.

  개발 완료 후에 실제로 Docker Image를 배포하신다면 Image 내에 코드들을 복사하셔야 합니다.