我需要运行一个容器(‘子“映像),它可以访问GPU进行视频编码加速,但我也需要它由群编排。下面的复合文件(堆栈文件)有效地启动子映像,但当堆栈被移除时,子容器将成为孤儿。我试图避免在每个Jér me Petazzoni的优秀博客中运行码头工人。为了让子容器链接到父服务(允许子容器通过父服务由群编排),我是否还遗漏了其他标签?
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
发布于 2019-09-28 14:54:14
事实证明,这在Docker中是非常直接的,只要您保持侧加容器(子容器)的PID链完整,并正确地管理OS信号。如果PID链保持不变,子容器将在父服务终止时接收SIGTERM信号。我们遇到了3起我们必须处理的案件;容器直接运行我们的应用程序,我们可以控制它以确保信号被处理。容器应用程序是一个第三方应用程序,运行在shell下,正确地处理信号,和3)。容器应用程序不能正确处理信号。
https://stackoverflow.com/questions/58019872
复制相似问题