###### tags: `tutorials` `docker` `GPU` `NVIDIA` `linux` `ubuntu` `deep learning` `cuda` `AI` # Docker 安裝 ## 移除舊 docker ~~~bash= ! $ sudo apt-get -y remove docker docker-engine docker.io && sudo apt-get -y update ~~~ ## 添加 docker 套件庫來源 ~~~bash= ! $ 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(需指定版本) ~~~bash= ! $ sudo apt-get -y install docker-ce={docker-version} ~~~ - 可以用 `$ apt-cache madison docker-ce` 查看 docker 版本 - 安裝完後可以使用 `$ sudo docker run hello-world` 測試有沒有裝成功 :::warning `{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` ::: :::spoiler lazy mode 安裝最新版本(即第一行版本) docker ```bash= ! $ 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 ~~~bash= ! $ 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` 執行 ~~~bash= ! $ sudo groupadd docker; sudo usermod -aG docker $USER ~~~ :::warning 設定完後需重新登入 ::: ## 安裝 nvidia-docker :::spoiler **舊版 docker (docker-ce < 19.03)** ### 安裝 `nvidia-docker2` 及重新載入 Docker daemon configuration ~~~bash= ! $ sudo apt-get -y install nvidia-docker2 $ sudo pkill -SIGHUP dockerd ~~~ - 用 `nvidia-cuda-docker` 測試 ~~~bash= ! $ docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi ~~~ :::warning - 如果系統安裝的 cuda 版本不是最新的,`nvidia/cuda` 可能要需要指定版本,像是 `docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi` 就是用 `cuda9` 測試 - 如果沒有安裝 `nvidia-smi` 會無法執行,但仍可正常安裝 > [安裝 `nvidia-smi`](/@jimmy801/nv_driver) :::danger `nvidia-docker` 版本必須要和 `docker-ce` 版本配合,否則會有錯誤 ::: ### 新版 docker (docker-ce >= 19.03) 是安裝新的 `NVIDIA Container Toolkit` ~~~bash= ! $ sudo apt-get -y install nvidia-container-toolkit && sudo systemctl restart docker ~~~ - 用 `nvidia-cuda-docker` 測試 ~~~bash= ! $ docker run --gpus all nvidia/cuda nvidia-smi ~~~ :::warning 如果系統安裝的 cuda 版本不是最新的,`nvidia/cuda` 可能要需要指定版本,像是 `docker run --gpus all nvidia/cuda:9.0-base nvidia-smi` 就是用 `cuda9` 測試 - 如果沒有安裝 `nvidia-smi` 會無法執行,但仍可正常安裝 > [安裝 `nvidia-smi`](/@jimmy801/nv_driver) ::: # MORE - 可以安裝 [Docker-compose](/@jimmy801/docker_compose_install) - 可以參考 [Docker 使用教學](/@jimmy801/docker_usage) 查看使用方式