35

我可以使用以下命令从命令行运行 tensorflow 容器并访问 GPU

$ sudo docker run --runtime=nvidia --rm gcr.io/tensorflow/tensorflow:latest-gpu

我希望能够从 docker-compose 运行这个容器。是否可以从 指定--runtime标志docker-compose.yml

4

3 回答 3

42

目前(2018 年 8 月),用于 Docker 的 NVIDIA 容器运行时 ( nvidia-docker2 )支持 Docker Compose

是的,使用 Compose 格式 2.3 并将 runtime: nvidia 添加到您的 GPU 服务。Docker Compose 必须是 1.19.0 或更高版本。

示例docker-compose.yml

version: '2.3'

services:
  nvsmi:
    image: ubuntu:16.04
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    command: nvidia-smi

来自 NVIDIA 博客的更多示例使用 Docker Compose来展示如何使用 NVIDIA Container Runtime 启动多个 GPU 容器。

于 2018-08-28T18:04:47.097 回答
31

您应该编辑/etc/docker/daemon.json,添加第一级密钥"default-runtime": "nvidia",重新启动 docker daemon(例如"sudo service docker restart"),然后该主机上的所有容器将使用 nvidia 运行时运行。

更多信息在daemon.json 这里

于 2017-11-26T11:58:57.453 回答
5

或者更好:使用systemd并假设路径是/usr/libexec/oci/hooks.d/nvidia

配置

mkdir -p /etc/systemd/system/docker.service.d/
cat > /etc/systemd/system/docker.service.d/nvidia-containers.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -D --add-runtime nvidia=/usr/libexec/oci/hooks.d/nvidia --default-runtime=nvidia
EOF

重新开始

systemctl daemon-reload
systemctl restart docker

演示

不需要指定--runtime=nvidia,因为我们default-runtime=nvidia在配置步骤中设置了。

docker run --rm gcr.io/tensorflow/tensorflow:latest-gpu

解决方案 灵感来自我关于 KATA 运行时的教程

于 2018-07-21T15:00:57.063 回答