Tag: 系统

保持与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: $ […]

数字海洋液滴内的所有容器都会停止

我有一个数字海洋液滴,我运行4个容器,每个小型的python应用程序。 不时(一周或两周一次),所有的容器都停止工作。 这不是由它们内部的python应用程序引起的。 我做了一个systemd计时器,每隔30分钟执行一次bash脚本来检查容器是否正在运行,如果没有,启动它们。 计时器工作了几天,从来没有重新启动一个容器。 但是,有一天,我匆匆看到我的液滴,并看到容器已经停止 – 而且systemctl list-timers –all – 都告诉我,计时器从系统计时器中消失了! 这只是不存在了! 容器检查脚本正在写入日志,并且在容器停止的同时日志停止。 问题: 我怎么知道什么阻止了我的容器? 系统定时器如何消失? 我该如何解决? 我是唯一一个能够s手drople脚的人,所以别人也不能搞砸了。

docker集装箱:时间/时区错误

我在一个正在运行的docker容器与节点和由于某种原因的时区/主机的时间vsdocker容器内部从来没有排队: root@foobar:~# node -e "console.log(new Date())" >> Tue May 17 2016 15:12:43 GMT+0200 (CEST) root@foobar:~# docker exec 9179105c0ff9 node -e "console.log(new Date())" >> Tue May 17 2016 13:13:01 GMT+0000 (Europe) root@foobar:~# cat /etc/timezone >> Europe/Vienna root@foobar:~# docker exec 9179105c0ff9 cat /etc/timezone >> Europe/Vienna 所以我已经在我的docker-start shell中做了以下脚本: docker run \ … -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ […]

将日志元数据写入rsyslog

我有一个设置泊坞窗容器使用日志logging驱动程序写他们的日志。 目前,来自日志的日志行被转发到主机上运行的dockerd ,但syslog行上的应用程序名称显示为dockerd 。 作为一种解决方法,我希望将日记元数据中的CONTAINER_NAME字段写入syslog中出现的行中,以便在主机的syslog被传送到syslog聚合服务器之后,我可以识别哪个容器写了什么行。 有什么build议么?

特权的docker容器不能删除function?

我正在运行这个 docker run –rm –name mydocker –privileged \ -v /sys:/sys:ro \ -v /dev:/dev \ –stop-signal=SIGRTMIN+3 \ -p 8080:8080 \ -p 5005:5005 \ -p 8443:8443 \ –net=host \ –cap-drop=SYS_BOOT \ /usr/sbin/init 它应该作为init运行systemd并从其中删除SYS_BOOTfunction。 这是彻底closures容器所必需的。 如上所述运行时,它会将systemd init作为pid 1运行,但function不会丢失: [root@FK8CDFA9A82A9E7-A /]# cat /proc/1/status | grep Cap CapInh: 0000003fffffffff CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff CapAmb: 0000000000000000 当SYS_BOOTfunction被删除时,它应该看起来像这样: CapInh: 0000003fffbfffff […]

Docker容器在CoreOS中过了一段时间

我有几个在CoreOS beta(899.5.0)上运行的小项目, 这是我第二次发生,我有3个容器运行。 所有的罚款和花花公子。 然后几天后,我没有看到我的网站在服务器上,我注意到,当我试图访问他们的网页。 当我login到Digital Ocean上的CoreOS机器并键入docker ps ,我注意到我的所有容器都没有了! 疯了吧。 我甚至为他们中的一些人build立了一个systemd服务,所以如果他们因为什么原因终止了,他们应该再次运行。 但他们没有。 当我login时,我确实看到了这个问候; 我不确定它是否与它有关: Last login: Sun Jan 17 23:42:37 2016 from 81.106.109.70 CoreOS beta (899.5.0) Failed Units: 13 sshd@1509-178.62.0.199:22-219.219.114.120:14536.service sshd@1541-178.62.0.199:22-219.219.114.120:30158.service sshd@1581-178.62.0.199:22-219.219.114.120:17539.service sshd@1995-178.62.0.199:22-122.224.34.168:1397.service sshd@1996-178.62.0.199:22-122.224.34.168:3789.service sshd@2002-178.62.0.199:22-122.224.34.168:2983.service sshd@230-178.62.0.199:22-219.219.114.120:51826.service sshd@259-178.62.0.199:22-219.219.114.120:38882.service sshd@309-178.62.0.199:22-219.219.114.120:34654.service sshd@326-178.62.0.199:22-219.219.114.120:21256.service sshd@346-178.62.0.199:22-219.219.114.120:39645.service sshd@364-178.62.0.199:22-219.219.114.120:63277.service sshd@791-178.62.0.199:22-219.219.114.120:37294.service 我无法在Google上find有关CoreOS发生的任何信息。 请任何帮助表示赞赏! PS我的systemdconfiguration看起来像这样: szeremi.service [Unit] Description=Run %p Requires=docker.service After=docker.service [Service] Restart=always ExecStartPre=-/usr/bin/docker kill […]

systemd,docker或systemd-journal(在稳定的CoreOS上)使用高CPU

我在AWS EC2 t2.micro实例上运行CoreOS稳定的AMI。 在这个实例上运行的唯一一个不能在纯粹的CoreOS上运行的进程是nginx,它每天只能提供一些请求(而不是产品),根据我的NewRelic服务器使用0.01%的CPU。 我发现我每周或者2个CPU用完了,导致实例完全没有响应。 它看起来像systemd是罪魁祸首每个图下面。 *注:我认识到一个简单的解决办法是升级实例或不使用t2,但我想find问题的根源并修复它,而不是花费更多的钱在一个很难被使用的实例上。 我希望能够使用t2.micro实例,而不用担心核心进程使其不稳定。 这是我的24小时来自NewRelic的进程CPU使用情况图: 以下是我的AWS CloudWatch图表,用于在同一个24小时范围内的CPU贷方余额,CPU利用率和CPU贷方使用情况。 这是我2个星期的CPU贷方余额。 你会发现它随着时间的推移逐渐减less,有一些尖锐的尖峰/下降。 值得注意的是,如果我重新启动实例,并通过top观察进程,则docker,systemd和systemd-journal的CPU使用率并不高。 这是一个多小时。 这是过去24小时内的系统。 看到它正在使用一致的2-5%的CPU,然后达到15%,这正好在CPU用完之前,然后在重新启动之后,它一直是稳定的<1%。

Docker和systemd – 服务在10秒后停止

在遇到由systemd启动的Docker容器时,我遇到了麻烦。 当我用sudo docker start containername手动启动它sudo docker start containername ,它保持没有问题,但是当它通过systemd sudo systemctl start containername ,它保持10秒钟然后神秘死亡,留下syslog中的消息如下所示: Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="POST /v1.17/containers/containername/stop?t=10" Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="+job stop(containername)" 我假设它是systemd杀死进程,但是我不知道为什么它可能会发生。 systemd单元文件(/etc/systemd/system/containername.service)非常简单,如下所示: [Unit] Description=MyContainer After=docker.service Requires=docker.service [Service] ExecStart=/usr/bin/docker start containername ExecStop=/usr/bin/docker stop containername [Install] WantedBy=multi-user.target Docker在启动时可以正常启动,它甚至可以启动Docker容器,但无论是在启动还是手动启动,都会在10秒后退出。 帮忙谢谢收到!

Journalctl:将_SYSTEMD_UNIT字段添加到日志打印输出中

使用命令: / usr / bin / journalctl -o short -f | ncat {some-ip} {some port} 将日志输出转发到某个远程日志跟踪应用程序。 问题在于,我在打印输出中缺lesssystemd单元/服务名称,很难确定哪个服务会产生什么日志行。 例如这是一个nginx行: Jun 25 07:51:09 localhost bash [497] :10.23.132.98 – – [25 / Jun / 2014:07:51:09 +0000]“GET /page.html HTTP / 1.1”200 321“https:// {ip}“”Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,像Gecko)Chrome / 35.0.1916.153 Safari / 537.36“ 在日志中有bash [497] – 进程的PID。 […]

如何检查我的本地泊坞窗图像是否过时,而不从其他地方推送?

我正在Coreos服务器上的docker容器中运行一个反应应用程序。 假设它是从https://hub.docker.com/r/myimages/myapp dockerhub中提取的。 现在我想定期检查应用程序容器的dockerhub图像是否已经更新,看看我在本地运行的图像是否在后面。 与远程图像相比,检查本地泊坞窗图像是否过时最有效的方法是什么? 到目前为止,我发现的所有解决scheme都是bash脚本或推送更新的外部服务。 我想find一个尽可能原生docker解决scheme,并希望避免从其他地方推送通知(以提醒服务器更新的图像)。