【问题标题】:How do I specify nvidia runtime from docker-compose.yml?如何从 docker-compose.yml 指定 nvidia 运行时?
【发布时间】:2017-11-24 02:51:53
【问题描述】:

我可以运行一个 tensorflow 容器,通过以下命令从命令行访问 GPU

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

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

【问题讨论】:

    标签: docker tensorflow docker-compose tensorflow-gpu nvidia-docker


    【解决方案1】:

    目前(2018 年 8 月),适用于 Docker 的 NVIDIA 容器运行时 (nvidia-docker2) supports 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
    

    更多 example from NVIDIA blog uses Docker Compose 展示如何使用 NVIDIA Container Runtime 启动多个 GPU 容器。

    【讨论】:

    • 此选项目前仅适用于 docker-compose v2。有关更多信息,请在此处查看相应的拉取请求github.com/docker/compose/pull/5405
    • 这个选项更优雅,因为它允许使用 docker-compose 更好地打包
    • hm 不同的容器可以在一个 docker-compose 文件中有不同的运行时间吗?
    【解决方案2】:

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

    更多信息daemon.jsonhere

    【讨论】:

      【解决方案3】:

      或者更好:使用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
      

      解决方案灵感来自我的tutorial about KATA runtime

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        相关资源
        最近更新 更多