본문 바로가기
IT/도커

[docker] GPU를 사용하는 도커 컨테이너 띄우기(1) - nvidia container toolkit 설정

by 한동두 2024. 8. 2.
반응형

일반적인 경우 docker를 run시킬때, 별다른 조건 없이 docker를 run시킬 수 있다.

하지만.. 데이터 분석을 위한 vm을 제공해야 할 때, gpu를 사용할 수 있도록 docker에게 할당해야하는 경우가 있다.

 

이번에는 오프라인 환경(내부망) gpu를 사용하는 도커를 만들때 필요한 과정을 적어보려고 한다.

docker랑 nvidia driver는 설치되어있다는 가정하에 진행해보도록 하겠다.

 

 

 

1. nvidia container toolkit의 이해

 

일반적인 환경에서 docker run 하게 되면 host의 cpu를 기반으로 docker가 생성된다고 한다.

docker가 gpu를 사용할 수 있게 하려면 이 nvidia container toolkit이 필요하다고..

nvidia 공식 홈페이지 설명

대충 해석해보면 이 nvidia container toolkit이 컨테이너에서 gpu 가속을 할 수도록 build 하고 run하는걸 돕는다는 내용이다.

 

 

 


2. nvidia container toolkit 다운로드/설치

온라인 환경에서라면 외부 링크를 통해서 설치가 가능하지만.. 오프라인에서는 미리 다운받아온 파일을 이용해서 설치해야한다. 파일은 여기를 참고해서 다운받아준다.

OS 선택

나는 CentOS7이라서, rhel7에서 찾아주었다.

https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/ 여기 보면 엄청 라이브러리들이 많은데 이 중 

nvidia-container-toolkit을 설치해주자. 버전은 알잘딱하게 선택해주자.

 

이제 usb를 이용해서 내부망 pc로 파일을 이동시켜주고,

그 다음 linux에서 

centOS/amzn -> rpm -i 파일명.rpm
debian/ubuntu -> dpkg -i 파일명.deb

위 코드를 이용하여 설치해주면 된다. 이러면 설치는 끝이다.

 

 

사실 나는 docker 19.03+ 환경에 nvidia docker 관련한 패키지가 모두 깔려있어 별도의 라이브러리를 설치해 주지 않아도 잘 돼서.. nvidia-container-toolkit만 깔아도 되는지는 확신이 없다. 

만약에 제대로 안된다면 버전을 맞춰서 libnvidia-container와 nvidia-container-runtime를 설치해보면 좋을듯 하다.

 

 

 

 


3. daemon.json 수정

docker의 daemon파일을 수정해줘야한다. docker를 실행시킬때마다 별도의 설정 없이 바로 gpu를 사용할 수 있도록 해주는 역할을 한다.

 

대부분의 docker의 daemon.json위치는 리눅스 기준으로

/etc/docker/daemon.json 에 있다. 

만약에 없다면 find로 파일을 찾아보자

find / -name daemon.json

없다면 /etc/docker/  위치에 생성해주자.

 

 

vi /etc/docker/daemon.json
혹은
vi /yourpath/daemon.json

 

편집기로 json을 열고 i를 누르고 편집모드로 들어가 아래와 같이 수정해주어야한다.

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia"
}

 

daemon을 적용하기 위해 도커 서비스를 다시 시작해주자. 이렇게 하면 daemon 설정이 업데이트 되어 적용될 것이다.

sudo systemctl restart docker

 

 

 

 

이렇게 도커 세팅이 완료되었다.

이제 도커 내부에서 GPU를 잘 받고있는지 확인하면 끝이다.

여러가지 방법이 있지만, 나는 컨테이너 내에서 tensorflow를 통해 GPU를 확인할 것이다. 이 내용은 다음 게시글에 적도록 하겠다.

 

 

더보기

라이브러리까지 본인이 다 설치하고 세팅했다면 좀 더 자세히 알 수 있었을거같은데

이미 다 깔려있고 심지어 실행이 되고 있는 상태에서 테스트를 했고 성공한 이후에 손을 떼 버려서 (계속 상주하는 곳이 아니고 가끔씩 방문하는 곳이라 테스트랑 모니터링을 많이 할 수가 없다. 그래서 지금도 기억에 의존해서 글을 쓰고있다.)

추측성으로 글을 쓰는게 좀 마음에 걸린다 ㅠㅠ.

 

 

도움이 필요하신 분은 댓글을 달아주시면 개인 gpu로 테스트 해서 돕겠습니다!

편하게 달아주세요!

반응형