Docker 를 수행하기 위해서 매번 수많은 파라메터를 입력하는것은 여간 귀찮은 일이 아닐 수 없습니다.

그리고 그 수 파라메터를 외우고 다닐 수도 없는 노릇이죠.

그래서 Docker 에서는 yml 형식으로 실행환경을 저장하고, 실행할 수 있도록 compose 라는 것을 지원해 줍니다.




Docker Compose





Docker Compose 설치하기




Docker Compose 설치 매뉴얼 주소:

https://docs.docker.com/compose/install/



먼저 Docker Compose 를 다운로드 받습니다.


$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose



그리고 실행 권한을 줍니다.


$ sudo chmod +x /usr/local/bin/docker-compose






Docker Compose 설치 확인




버전확인을 통해 설치 여부를 확인합니다.


$ docker-compose --version

docker-compose version 1.22.0, build f46880fe









Docker Compose 에서 NVIDIA GPU 사용하기




Docker Compose 에서 NVIDIA GPU 를 사용하기 위해서는 yml 파일에서 runtime: nvidia 로 지정해 주시면 됩니다.

Compose format(yml)은 2.3 으로 지정해 주어야 합니다.


관련 도움말은 아래 주소에서 확인 할 수 있습니다.

https://github.com/NVIDIA/nvidia-docker/wiki/Frequently-Asked-Questions#do-you-support-docker-compose




확인을 위해서 간단한 Docker-Compose 파일을 만들어 봅시다.


version: '2.3'

services:
    app:
        image: nvidia/cuda
        runtime: nvidia
        command: nvidia-smi
파일은 myapp.yml 로 저장합니다.

본래 Docker-Compose 에서 사용하는 yml 의 기본 파일명은 "docker-compose.yml" 또는 "docker-compose.yaml" 입니다.

이 경우 Docker-Compose 실행시 별도의 파라메터가 없으면, 알아서 위 파일을 찾습니다.


하지만 myapp.yml 과 같이 다른 파일명을 사용하려면, 실행시 -f 플러그를 이용해서 파일을 명시해 주어야 합니다.


Docker-Compose 와 GPU 가 정상적으로 동작하는지 확인해 봅시다.


docker-compose -f ./myapp.yml up

Creating network "myapp_default" with the default driver

Creating myapp_app_1 ... done

Attaching to myapp_app_1

app_1  | Mon Sep  3 09:40:06 2018

app_1  | +-----------------------------------------------------------------------------+

app_1  | | NVIDIA-SMI 384.125                Driver Version: 384.125                   |

app_1  | |-------------------------------+----------------------+----------------------+

app_1  | | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |

app_1  | | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |

app_1  | |===============================+======================+======================|

app_1  | |   0  GeForce GTX 108...  Off  | 00000000:01:00.0 Off |                  N/A |

app_1  | | 33%   47C    P0    54W / 250W |      0MiB / 11172MiB |      0%      Default |

app_1  | +-------------------------------+----------------------+----------------------+

app_1  | |   1  GeForce GTX 108...  Off  | 00000000:0A:00.0 Off |                  N/A |

app_1  | |  0%   39C    P5    24W / 250W |      0MiB / 11172MiB |      2%      Default |

app_1  | +-------------------------------+----------------------+----------------------+

app_1  |

app_1  | +-----------------------------------------------------------------------------+

app_1  | | Processes:                                                       GPU Memory |

app_1  | |  GPU       PID   Type   Process name                             Usage      |

app_1  | |=============================================================================|

app_1  | |  No running processes found                                                 |

app_1  | +-----------------------------------------------------------------------------+

myapp_app_1 exited with code 0



위와 같이 실행되면, 잘 설치된 것입니다.