tags: tutorials docker GPU NVIDIA linux ubuntu deep learning cuda AI

Docker 安裝

移除舊 docker

$ sudo apt-get -y remove docker docker-engine docker.io && sudo apt-get -y update

添加 docker 套件庫來源

$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && sudo apt-get -y update

安裝 docker(需指定版本)

$ sudo apt-get -y install docker-ce={docker-version}
  • 可以用 $ apt-cache madison docker-ce 查看 docker 版本
  • 安裝完後可以使用 $ sudo docker run hello-world 測試有沒有裝成功

{docker-version} 為特定的版本號,像是如果上面執行 $ apt-cache madison docker-ce 所看到的版本列表可能如下

 docker-ce | 5:20.10.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:20.10.1~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:20.10.0~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.14~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.13~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.12~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.11~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.10~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.9~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.8~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.7~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.6~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.5~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.4~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.3~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.1~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:19.03.0~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.9~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.8~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.7~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.6~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.5~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.4~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.3~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.2~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.1~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 5:18.09.0~3-0~ubuntu-bionic | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 18.06.3~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 18.06.2~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
 docker-ce | 18.03.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

如果要安裝 20.10.2 版(第一行的版本),則執行 $ sudo apt-get -y install docker-ce=5:20.10.2~3-0~ubuntu-bionic

lazy mode

安裝最新版本(即第一行版本) docker

$ sudo apt-get -y update && docker_version=$(apt-cache madison docker-ce | grep -m1 "ubuntu") && docker_version=${docker_version#*|} && docker_version=${docker_version%|*} && docker_version=${docker_version//+([[:space:]])/} && sudo apt-get -y install docker-ce=$docker_version

增加 docker 套件庫來源 nvidia-docker

$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - && distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list && sudo apt-get -y update

讓 docker 預設以 sudo 執行

$ sudo groupadd docker; sudo usermod -aG docker $USER

設定完後需重新登入

安裝 nvidia-docker

舊版 docker (docker-ce < 19.03)

安裝 nvidia-docker2 及重新載入 Docker daemon configuration

​​​$ sudo apt-get -y install nvidia-docker2 ​​​$ sudo pkill -SIGHUP dockerd
  • nvidia-cuda-docker 測試
​​​$ docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
  • 如果系統安裝的 cuda 版本不是最新的,nvidia/cuda 可能要需要指定版本,像是 docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi 就是用 cuda9 測試
  • 如果沒有安裝 nvidia-smi 會無法執行,但仍可正常安裝

    安裝 nvidia-smi

nvidia-docker 版本必須要和 docker-ce 版本配合,否則會有錯誤

新版 docker (docker-ce >= 19.03) 是安裝新的 NVIDIA Container Toolkit

$ sudo apt-get -y install nvidia-container-toolkit && sudo systemctl restart docker
  • nvidia-cuda-docker 測試
$ docker run --gpus all nvidia/cuda nvidia-smi

如果系統安裝的 cuda 版本不是最新的,nvidia/cuda 可能要需要指定版本,像是 docker run --gpus all nvidia/cuda:9.0-base nvidia-smi 就是用 cuda9 測試

  • 如果沒有安裝 nvidia-smi 會無法執行,但仍可正常安裝

    安裝 nvidia-smi

MORE