Docker의 Runtime

작성자 김아름 수정일 2022-12-13 08:29

#docker, #도커, #runtime, #gpu, #nvidia-smi

들어가며

  • Docker에서 container가 GPU 자원을 사용하기 위해서는, nvidia-docker2 설치가 필요합니다.

  • 그렇다면, nvidia-docker2를 설치한 후 어떤 설정을 해주어야 container가 GPU 자원을 사용할 수 있는지 알아보겠습니다.



nvidia-container-runtime

예전 docker는 GPU 자원을 사용하기 위해 nvidia-docker 명령어 설치가 따로 필요했습니다.

그러나 현재는 별도의 명령어를 설치하지 않고 nvidia-container-runtime 패키지를 설치하는 것으로 docker 자체 명령어로 GPU 자원을 사용할 수 있게 되었습니다.


GPU자원을 사용하기 위해서는 docker 커맨드 라인에 옵션을 추가해 주어야 합니다.

docker run -it --gpus all ubuntu nvidia-smi


위와 같이 실행하면 매번 --gpus 옵션을 붙여 사용하기 불편한 점이 있습니다.

따라서 docker의 daemon.json파일에 default runtime을 설정해 줄 수 있습니다.



docker default runtime

docker의 daemon.json파일은 아래 경로에서 확인할 수 있습니다.

cat /etc/docker/daemon.json 
{
    "log-opts": {
        "max-size": "10m",
        "max-file": "5"
    },
    "data-root": "/k8s_images/docker",
    "storage-driver": "overlay2",
    "insecure-registries": ["hub.sparklingsoda.io:80", "devainexus:80"],
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }


위 파일에서 확인할 수 있듯이, default runtime을 nvidia-docker2 패키지의 nvidia runtime을 설정할 수 있습니다.

또한, nvidia runtime은 nvidia-container-runtime 패키지 라는 것을 명시해 주면 됩니다.


위 파일을 적용하고자 한다면, daemon을 다시 읽어들이면 됩니다.

systemctl daemon-reload


이제 docker의 설정을 확인해보면 default runtime이 nvidia로 설정되어 있음을 확인할 수 있습니다.

docker info | grep "Default Runtime"
 Default Runtime: nvidia



마무리

  • docker container가 GPU 자원을 사용하게 하려면, 어떤 설정을 해주어야 하는지 알아보았습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300