第1步 - 安装Docker
官方Ubuntu存储库中提供的Docker安装包,但是可能不是最新的版本。为了确保我们获得最新版本,我们将从官方Docker存储库安装Docker。为此,我们将添加一个新的资源包,从Docker添加GPG密钥以确保下载有效,然后安装该包。
首先,更新现有的包列表:
sudo apt update
接下来,使用apt
安装一些允许通过HTTPS才能使用的软件包:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
然后将官方Docker存储库的GPG密钥添加到您的系统:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
将Docker存储库添加到APT源:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
接下来,使用新添加的repo源中的Docker包更新包数据库:
sudo apt update
确保您要从Docker repo安装而不是默认的Ubuntu repo:
apt-cache policy docker-ce
虽然Docker的版本号可能不同,但您还是会看到这样的输出:
docker-ce: Installed: (none) Candidate: 18.03.1~ce~3-0~ubuntu Version table: 18.03.1~ce~3-0~ubuntu 500 500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages
现在docker-ce
还没有安装,用上面这个命令我们能看到安装源来自的Docker官方存储库。
最后,安装Docker:
sudo apt install docker-ce
现在应该安装好Docker了,检查它是否正在运行:
sudo systemctl status docker
输出应类似于以下内容,表明该服务处于工作状态:
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-08-26 13:21:04 UTC; 2min 34s ago Docs: https://docs.docker.com Main PID: 14080 (dockerd) Tasks: 35 CGroup: /system.slice/docker.service └─14080 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
2. 安装nvidia-docker
Ubuntu 16.04/18.04, Debian Jessie/Stretch/Buster
# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ 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 update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
Upgrading with nvidia-docker2 (Deprecated)
# On debian based distributions: Ubuntu / Debian
$ sudo apt-get update
$ sudo apt-get --only-upgrade install docker-ce nvidia-docker2 #注意执行是否忽略的nvidiadocker2
$ sudo systemctl restart docker# All of the following options will continue working
$ sudo docker run --gpus all nvidia/cuda:9.0-base nvidia-smi
$ sudo docker run --runtime nvidia nvidia/cuda:9.0-base nvidia-smi
$ sudo nvidia-docker run nvidia/cuda:9.0-base nvidia-smi
测试:
nvidia-docker
3. 问题处理
3.1 sudo systemctl restart docker 出错
在ubuntu上运行service服务报错:
Failed to allocate directory watch: Too many open files
解决方法
sudo vim /etc/sysctl.conf
fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144
生效
sysctl -p