python - 用于 Python 的 Nvidia-Docker API?
问题描述
我目前正在运行许多类似的 Docker 容器,这些容器是由 Python 脚本通过官方 API 创建和运行的。由于 Docker 本身不支持 GPU 映射,因此我测试了 Nvidia-Docker,它满足了我的要求,但我不确定如何将它无缝集成到我的脚本中。
我尝试使用 Google 和文档为 Nvidia-Docker 找到正确的 API 调用,但我没有找到任何有用的东西。
我当前的代码如下所示:
# assemble a new container using the params obtained earlier
container_id = client.create_container(img_id, command=commands, stdin_open=True, tty=True, volumes=[folder], host_config=client.create_host_config(binds=[mountpoint,]),detach=False)
# run it
client.start(container_id)
API 的文档可以在这里找到。
Docker® 引擎使用的默认运行时是 runc,我们的运行时可以通过使用 --default-runtime=nvidia 配置 docker 守护进程成为默认运行时。这样做将无需将 --runtime=nvidia 参数添加到 docker run。这也是在 docker build 期间获得 GPU 访问权限的唯一方法。
基本上,我想将 --runtime=nvidia-docker 参数添加到我的 create_container 调用中,但似乎不支持它。
但是由于我需要在脚本执行期间多次在运行时之间切换(混合 Nvidia-Docker 和本机 Docker 容器),快速而肮脏的方法是使用子进程运行 bash 命令,但我觉得必须有更好的方法。
TL;DR:我正在寻找一种从 Python 脚本运行 Nvidia-Docker 容器的方法。
解决方案
run()
并且create()
方法具有runtime
根据https://docker-py.readthedocs.io/en/stable/containers.html的参数
这很有意义,因为docker
cli 工具非常简单,并且每个命令都在调用 docker 引擎服务 REST API 时进行转换
推荐阅读
- python - 我想验证趋势从社交到搜索到销售的假设
- string - Scala在字符串中搜索某个Char
- kubernetes - 如何使用 Terraform 公开具有公共 IP 地址的 Azure Kubernetes 集群
- python - 设置 R 公式环境和转换上下文管理器
- javascript - 如何使 querySelector 仅在特定包含的文档中查找?
- ubuntu-18.04 - 尽管有这些错误,我如何安装 elm-repl?
- facebook-graph-api - 在 Instagram Graph API 中为业务发现洞察提供指标
- git - 通过跳过项目创建 gitlab 备份
- java - how do I design a loop that accepts user input for a golfer name and their score then displays list?
- assembly - 汇编语言中的PUSH指令是零地址指令还是一地址指令?