【问题标题】:Docker Alpine linux running 2 programsDocker Alpine linux运行2个程序
【发布时间】:2018-03-03 23:47:50
【问题描述】:

我正在尝试使用 alpine linux 创建 docker 映像,运行后将创建包含 2 个正在运行的程序的容器。这 2(在我看来 - 我不太了解 docker)不能分开,因为第一个程序更改了 seconds 配置文件,然后也应该重新启动该程序。

我正在努力如何运行这两个程序。我添加了自己的脚本,它应该运行该程序,但我遗漏了一些东西 - 脚本每行有 2 行是用于运行该程序的命令 - 它只启动第一个程序。

在带有 python 子进程和 systemctl 命令的 ubuntu 中,我重新启动正在运行的服务,但在 alpine linux 中,它作为程序运行,我不知道如何重新启动/重新加载它。

【问题讨论】:

    标签: python docker alpine ash


    【解决方案1】:

    我建议查看supervisord 方法。你可以在docker documentation找到如何使用它。

    一些例子:

    1. Dockerfile 是:

    FROM alpine:latest
    RUN apk update && apk add --no-cache supervisor openssh nginx
    COPY supervisord.conf /etc/supervisord.conf
    CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
    

    2. supervisord.conf 是:

    [supervisord]
    nodaemon=true
    
    [program:sshd]
    command=/usr/sbin/sshd -D
    
    [program:nginx]
    command=nginx -c /etc/nginx/nginx.conf
    

    【讨论】:

    • 这个 Dockerfile 中RUN mkdir -p /etc/supervisor.d 的目的是什么。在supervisord.org 的链接中看不到它。
    【解决方案2】:

    您需要在后台运行第一个程序才能执行脚本的第二行。

    当您有两个必须在一个容器内运行的进程时,就有zombie processes 的风险(即容器不会正确地将 SIGKILL 信号传递给所有进程)。
    用作您的基础镜像phusion/baseimage-docker:它用于管理多个进程。

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 1970-01-01
      • 2018-03-25
      • 2016-10-28
      • 2020-09-21
      • 2021-09-27
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多