【问题标题】:How to point to initial runtime when restarting an existing docker container重新启动现有 docker 容器时如何指向初始运行时
【发布时间】:2019-12-29 11:44:36
【问题描述】:

我想在退出并重新启动后重新启动一个 docker 容器,并使用最初创建它时使用的相同运行时。

这是我到目前为止所做的。

创建容器:

sudo docker run --runtime=nvidia [...]

退出容器并重启后重启Docker:

service docker restart

重启之前创建的容器:

sudo docker start my_container

重新打开容器。

docker exec -it my_container [...]

随后在容器中启动的程序未按预期使用 Nvidia GPU。而是使用系统 CPU。

任何帮助将不胜感激。

【问题讨论】:

  • 同一个运行时是什么意思?你的意思是你需要你的 docker 容器在系统重启/启动时运行,甚至在 docker 服务重启时运行?
  • 我希望在重新启动的容器中运行命令时使用 nvidia GPU。
  • 您的意思是 docker run 的--runtime=nvidia 选项应该始终有效并指向 nvidia 运行时?
  • 并非总是如此,仅适用于使用 --runtime=nvidia 选项创建的特定容器。我可能缺少一个关于 Docker 的概念,但是当我第一次创建容器(使用 run 命令)时,我在其中启动的程序使用 nvidia GPU 执行,当我退出容器然后重新打开时情况并非如此使用exec 命令。
  • 碰巧只有在系统重启时才会出现问题。如果我只是简单地stop 容器然后start 再次使用它,则仍然使用 nvidia GPU。我猜运行时在重新启动时未注册。

标签: linux docker cuda nvidia nvidia-docker


【解决方案1】:

我通过使用--restart=unless-stopped 策略创建一个新容器得到了预期的结果,该策略允许 Docker 在重启 Docker 服务时自行重启容器。在这个过程中,似乎比我使用的start/exec 序列要做的更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 2020-01-21
    • 2019-05-21
    • 2014-09-27
    • 2019-04-22
    • 2019-01-15
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多