상세 컨텐츠

본문 제목

우분투 도커 컨테이너 툴킷 설치 (docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]])

shell commands

by Riella 2025. 4. 11. 11:07

본문

728x90

도커에서 --gpus all 옵션을 사용할때 흔히 나는 오류이다.

도커가 런타인에 쓸 GPU를 찾지 못해서 뜨는 에러인데 문제의 원인은 크게

1. NVIDIA 드라이버가 제대로 설치 되지 않은 경우 (여기로)

2. NVIDIA 도커 툴킷이 제대로 설치 되지 않은 경우가 있다.

 

2의 경우 공식 사이트에서 툴킷을 다운 받고 등록(어디 위치한지 알아야 쓸 수 있으니)하는 과정까지 나와있다.

[도커 컨테이너 툴킷 설치]

1. 툴킷 설치하기 위한 저장소 등록

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

 

2. 외부 패키지 받기 위한 저장소 등록

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

 

보통 권한이 없다고 뜨기 때문에 아래처럼 권한을 주면 된다.

sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

 

3. 설치

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

 

4. 도커 컨테이너 툴킷 등록

sudo nvidia-ctk runtime configure --runtime=docker

 

여기서 간혹가다 아래와 같은 에러가 뜨는데

INFO[0000] Loading config from /etc/docker/daemon.json  
ERRO[0000] unable to load config for runtime docker: EOF

 

/etc/docker/daemon.json파일에 문제가 있다는거다.

이것때문에 위 과정을 3트하고 결국 daemon.json파일을 지우고 다시 만들어줬다 (원래 도커 설치할때는 없는 파일이라 삭제하고 다시 만들어도 괜찮다)

하지만 없앨 필요까지는 없고 아래처럼 수정을 하면 된다.

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "runtimes": {
    "nvidia": {
      "path": "nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

 

하지만 수정한 파일도 valid해야 돌아가므로 JSON이 valid한지 테스트하고

cat /etc/docker/daemon.json | jq .

 

jq없을시 설치하고 윗 명령어 다시

sudo apt install jq

 

도커 재시작을 하면 된다.

sudo systemctl restart docker

 

도커가 잘 돌아가는지 확인

sudo systemctl status docker

 

그리고 4 다시 실행.. 후 도커 재시작

sudo systemctl restart docker

 

이후 --gpus 들어간 옵션으로 도커 컨테이너를 만들어도 에러가 뜨지 않는다.

관련글 더보기

댓글 영역