Tag: 监督

Dockerfile supervisord找不到path

出于某种原因supervisord不能启动时,执行docker运行…如果我注销的configuration存储supervisord的path,我可以清楚地看到,该文件存在。 下面是我目前没有注释掉的Docker文件的一部分。 FROM ubuntu:16.04 MAINTAINER Kevin Gilbert # Update Packages RUN apt-get -y update # Install basics RUN apt-get -y install curl wget make gcc build-essential # Setup Supervisor RUN apt-get -y install supervisor RUN mkdir -p /var/log/supervisor COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf CMD ["/usr/bin/supervisord", "-c /etc/supervisor/conf.d/supervisord.conf"] 这是我在terminal运行后得到的错误。 remote-testing:analytics-portal kgilbert$ docker run kmgilbert/portal Error: could not find […]

如何使用supervisord在Docker容器内启动Docker守护进程?

我是Docker容器内的用户supervisord和Docker 1.5.0(使用debian jessie),但是我不能从Docker容器内运行任何容器: $ docker run busybox bash Unable to find image 'busybox:latest' locally 511136ea3c5a: Pull complete df7546f9f060: Pull complete ea13149945cb: Pull complete 4986bf8c1536: Pull complete busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Status: Downloaded newer […]

保持与supervisord活着的Docker容器

我用这些行结束我的Debian Dockerfile: EXPOSE 80 22 COPY etc/supervisor/conf.d /etc/supervisor/conf.d CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] 在/etc/supervisor/conf.d/start.conf文件中: [program:ssh] command=/usr/sbin/service ssh restart [program:nginx] command=/usr/sbin/nginx -g 'daemon off;' [program:systemctl] command=/bin/systemctl daemon-reload [program:systemctl] command=/bin/systemctl start php7-fpm.service 如果我尝试使用以下命令运行这个Docker镜像: $ docker run -d -p 8080:80 -p 8081:22 lanti/debian 立即停止运行。 如果我试图在前台运行它: $ docker run -it -v /home/core/share:/root/share -p 8080:80 -p 8081:22 lanti/debian 这是一样的,立即退出。 如果我用bash运行CMD: $ […]

Supervisord不断重复一个零退出的过程。

我正在努力让supervisord在开始时发送一个curl请求。 然而,尽pipe我尽了最大的努力,我将自动重启设置为false,但仍然运行脚本。 [program:slack-client] priority=99 autorestart=false command=bash -c 'SOME BASH COMMAND' 不断重复的错误是 INFO exited: slack-client (exit status 0; not expected)

在docker使用主pipe

我并不是在问Docker的主pipe,而只是想让我的理解得到validation。 我知道docker在运行时运行一个进程。 另外,当我们需要在容器中运行多个进程时使用监督器。 我已经看到了几个例子,其中一个容器是从基本映像启动的,并且安装了几个服务,并且容器承诺形成一个新的映像,全部没有pipe理员。 所以,我基本的疑问是两种方法之间有什么区别。 我的理解是,当docker容器被停止时,它向PID 1的进程发送一个kill信号,PID 1pipe理subprocess,并停止所有的subprocess,而supervisor完成的则是我们可以安装多进程,当docker run发出时,进程可以运行,当container停止时,只有PID 1发送信号,其他运行进程不会被正常停止。 请确认我对使用supervisord的理解是否正确。 谢谢

通过主pipeclosuresDocker容器

我无法closures主pipe通过supervisorctl stop all启动的Docker容器supervisorctl stop all 。 即使通过supervisorctl status显示容器已closures, docker ps和ps表明它们实际上仍在运行。 咨询supervisorctl stop <name>操作的主pipe文档显示,如果在某个宽限期之后仍然运行, SIGTERM被发送到进程之后的SIGKILL 。 我试图手动做到这一点,发现 发送到docker run进程的SIGTERM不会执行任何操作 SIGKILL会杀死进程,但实际上并没有更新docker。 docker ps显示这个容器仍在运行 主pipe的SIGKILL不closures容器 问题是:如何正确closures一个Docker容器的主pipe? 以下是我的模拟pipe理员的实验结果: 开始位置: foo-1和bar-1正在运行(我离开了GCE容器,以防他们有所作为)。 ps aux和docker ps是同步的。 me@devenv:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5ba70bf8937f me/app:foo "/bin/sh -c 'supervi 5 minutes ago Up 5 minutes foo-1 e1a684bcfceb me/app:bar […]

Docker,Supervisord和supervisor-stdout

我试图使用supervisor-stdout来集中来自supervisord的输出和它的进程。 但有了这个supervisordconfiguration: #supervisord.conf [supervisord] nodaemon = true [program:nginx] command = /usr/sbin/nginx stdout_events_enabled = true stderr_events_enabled = true [eventlistener:stdout] command = supervisor_stdout buffer_size = 100 events = PROCESS_LOG result_handler = supervisor_stdout:event_handler (请注意,supervisor-stoud的configuration部分与supervisor-stoud站点上的示例完全相同)。 …和这个Dockerfile: #Dockerfile FROM python:3-onbuild RUN apt-get update && apt-get install -y nginx supervisor # Setup supervisord RUN pip install supervisor-stdout RUN mkdir -p /var/log/supervisor […]

docker工人的替代supervisord

Supervisord甚至在docker环境中也是非常棒的工具。 它有助于很多stderrredirect和信号转发。 但它有一些缺点: 它不支持延迟启动。 延迟一些代理启动直到主应用程序正在初始化可能是有用的。 优先级不解决这个问题。 如果某个应用程序进入FATAL状态,supervisord只logging它,但继续工作。 所以你看不到它的容器日志。 如果supervisord刚刚停止,它可能会更友好,因为在这种情况下,您会看到docker ps -a的问题 那么,supervisord最好的select是什么?

无花果docker监控破碎的容器

我有一个无花果configuration启动Ndocker容器(应用程序,redis,mongo,postgre等…) 当我运行fig up一切都好。 Name Command State Ports ————————————————————————– my_mongodb_1 /usr/local/bin/run Up 28017/tcp, 27017/tcp my_redis_1 /usr/local/bin/run Up 6379/tcp my_pg_1 /usr/local/bin/run Up 5432/tcp my_app_1 … Up 443->443/tcp, 80->80/tcp 但其中一个不重要的原因可能是closures了其中一个容器。 Name Command State Ports ————————————————————————– my_mongodb_1 /usr/local/bin/run Up 28017/tcp, 27017/tcp my_redis_1 /usr/local/bin/run Exit 6379/tcp my_pg_1 /usr/local/bin/run Up 5432/tcp my_app_1 … Up 443->443/tcp, 80->80/tcp 可以configurationsupervisord来监视所有容器,并启动已经closures的容器

将环境variables从docker传递到supervisord

我使用docker run来传递两个envvariables: docker run -d –name foobar -e STAGE=testing -e STAGE_URL=http://… 以及启动一些进程的主pipe的dockerfile踢: CMD ["/usr/bin/supervisord", "–configuration", "/etc/supervisor/conf.d/supervisord.conf"] 在supervisord.conf我尝试读取variables: [program:build] priority=1 autorestart=false directory=/app/foobar command=grunt build –force –stage ${STAGE} –stage-url ${STAGE_URL} 我也试过 $STAGE 和 %(STAGE)s 但是STAGE从不被视为一个variables。 它永远不会被实际的内容取代。 相反,它被视为一个简单的string。 这导致: –stage STAGE –stage-url STAGE_URL 代替 –stage testing –stage-url http://… 这是甚至可能是我在做什么? 主pipe文件不清楚这个话题。 有任何想法吗?