Deep Learning

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

둔진 2020. 6. 2. 02:25

  전에 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 내에 코드들을 복사하셔야 합니다.