首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将容器作为群集服务的子程序运行

将容器作为群集服务的子程序运行
EN

Stack Overflow用户
提问于 2019-09-19 23:09:57
回答 1查看 84关注 0票数 0

我需要运行一个容器(‘子“映像),它可以访问GPU进行视频编码加速,但我也需要它由群编排。下面的复合文件(堆栈文件)有效地启动子映像,但当堆栈被移除时,子容器将成为孤儿。我试图避免在每个Jér me Petazzoni的优秀博客中运行码头工人。为了让子容器链接到父服务(允许子容器通过父服务由群编排),我是否还遗漏了其他标签?

代码语言:javascript
运行
复制
version: "3.7"
services:
  parent-service:
    image: docker:stable
    entrypoint: [sh, -c]
    environment:
      TASK_NAME: '{{.Task.Name}}'
    command: >-
      'exec docker run
      --interactive
      --device=/dev/dri/renderD128:/dev/dri/renderD128
      --label com.docker.stack.namespace=$$(docker container inspect --format "{{index .Config.Labels \"com.docker.stack.namespace\"}}" $${TASK_NAME})
      --volumes-from=$${TASK_NAME}
      --rm
      child:latest'
    volumes:
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-28 14:54:14

事实证明,这在Docker中是非常直接的,只要您保持侧加容器(子容器)的PID链完整,并正确地管理OS信号。如果PID链保持不变,子容器将在父服务终止时接收SIGTERM信号。我们遇到了3起我们必须处理的案件;容器直接运行我们的应用程序,我们可以控制它以确保信号被处理。容器应用程序是一个第三方应用程序,运行在shell下,正确地处理信号,和3)。容器应用程序不能正确处理信号。

  1. 在这种情况下,您的应用程序是PID 1,因此您确保它正确地处理信号,如SIGTERM,并终止应用程序以避免僵尸容器。
  2. 在这种情况下,PID链是通过使用'exec‘在shell下执行应用程序来维护的,后者将容器的PID 1从shell转换到应用程序。
  3. 对于最后一种情况,您可以使用哑巴启动容器应用程序,它将代表应用程序管理信号。在这种情况下,确保哑巴-init是PID 1。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58019872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档