Docker 容器在 systemd 启动后关闭

2024-05-12

由于某种原因,当使用 systemd 单元文件时,我的 docker 容器会启动,但会立即关闭。我尝试查找日志,但看不到任何有关发生这种情况的原因的指示。有没有人知道如何解决这个问题/找到显示正在发生的情况的日志?

注意:当使用 docker start containername 启动后手动启动它们时,它可以工作(也可以在使用 systemctl start nginx 时)

经过更多挖掘后,我发现了这个错误:could not find udev device: No such device它可能与此有关?

单位服务档案:

[Unit]
Description=nginx-container
Requires=docker.service
After=docker.service

[Service]
Restart=always
RestartSec=2
StartLimitInterval=3600
StartLimitBurst=5
TimeoutStartSec=5
ExecStartPre=-/usr/bin/docker kill nginx
ExecStartPre=-/usr/bin/docker rm nginx
ExecStart=/usr/bin/docker run -i -d -t --restart=no --name nginx  -p 80:80 -v /projects/frontend/data/nginx/:/var/www -v /projects/frontend: nginx
ExecStop=/usr/bin/docker stop -t 2 nginx

[Install]
WantedBy=multi-user.target

Journalctl 输出:

May 28 11:18:15 frontend dockerd[462]: time="2015-05-28T11:18:15Z" level=info msg="-job start(d757f83d4a13f876140ae008da943e8c5c3a0765c1fe5bc4a4e2599b70c30626) = OK (0)"
May 28 11:18:15 frontend dockerd[462]: time="2015-05-28T11:18:15Z" level=info msg="POST /v1.18/containers/nginx/stop?t=2"
May 28 11:18:15 frontend dockerd[462]: time="2015-05-28T11:18:15Z" level=info msg="+job stop(nginx)"

Docker 日志:空(docker 日志 nginx)

Systemctl 输出:(systemctl status nginx, nginx.service)

● nginx.service - nginx-container
   Loaded: loaded (/etc/systemd/system/multi-user.target.wants/nginx.service)
   Active: failed (Result: start-limit) since Thu 2015-05-28 11:18:20 UTC; 12min ago
  Process: 3378 ExecStop=/usr/bin/docker stop -t 2 nginx (code=exited, status=0/SUCCESS)
  Process: 3281 ExecStart=/usr/bin/docker run -i -d -t --restart=no --name nginx -p 80:80 -v /projects/frontend/data/nginx/:/var/www -v /projects/frontend:/nginx (code=exited, status=0/SUCCESS)
  Process: 3258 ExecStartPre=/usr/bin/docker rm nginx (code=exited, status=0/SUCCESS)
  Process: 3246 ExecStartPre=/usr/bin/docker kill nginx (code=exited, status=0/SUCCESS)
 Main PID: 3281 (code=exited, status=0/SUCCESS)

May 28 11:18:20,frontend systemd[1]: nginx.service holdoff time over, scheduling restart.
May 28 11:18:20 frontend systemd[1]: start request repeated too quickly for nginx.service
May 28 11:18:20 frontend systemd[1]: Failed to start nginx-container.
May 28 11:18:20 frontend systemd[1]: Unit nginx.service entered failed state.
May 28 11:18:20 frontend systemd[1]: nginx.service failed.

因为你没有指定Type在你的 systemd 单元文件中,systemd 使用默认值,simple. From 系统服务 http://www.freedesktop.org/software/systemd/man/systemd.service.html:

如果设置为 simple(如果既不是 Type= 也不是 BusName=,则为默认值,但是 ExecStart= 被指定),预计该进程 配置ExecStart=是服务的主进程。

这意味着如果该进程由ExecStart退出,系统 将假设您的服务已退出并将清理所有内容。

因为你正在运行 docker 客户端-d,它退出 立即...因此,systemd 清理了服务。

通常,当使用 systemd 启动容器时,您会not使用 这-d旗帜。这意味着客户端将继续运行,并且 将允许 systemd 收集您的应用程序产生的任何输出。

也就是说,使用 systemd 启动 Docker 容器存在根本问题。由于 Docker 的运行方式,systemd 确实无法监控容器的状态。它真正能做的就是跟踪 docker 的状态client,这不是一回事(客户端可以退出/崩溃/等而不影响您的容器)。这不仅与 systemd 有关;而且与 systemd 相关。any某种进程主管(upstart、runit、supervisor 等)也会遇到同样的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker 容器在 systemd 启动后关闭 的相关文章

随机推荐

  • CPP中原始数据类型的构造函数初始化

    在cpp中 我们可以将原始数据类型初始化为 int a 32 这个构造函数初始化是如何工作的 C 是否将其视为对象 这在以下内容中得到了最好的描述 C 03 8 5 初始化器 第 12 和 13 段 new 表达式 5 3 4 static
  • 我应该在 Turtle 或 Foldl 包中使用折叠吗?

    我在使用 Turtle 时遇到了一些困难 直到盯着难以理解的错误消息几分钟后才意识到我使用了错误的fold功能 https hackage haskell org package turtle 1 5 8 docs Turtle Shell
  • “必须有类或枚举类型的参数”实际上是什么意思

    我有一个头文件和一个 cpp 文件 我需要为我的 h 文件编写函数 但在完全完成框架 cpp 文件之前出现错误 Money h ifndef MONEY H define MONEY H include
  • Delphi XE5 REST/Android 客户端“会话已过期”

    我有一个REST Server与Android Client 都在Deplhi Xe5 Android客户端成功连接Rest服务器 在我的服务器中我有一个TDSHttpWebDispatcher with SessionTimeout 12
  • 在 Akka/Scala 中使用带有 future 的 mapTo

    我最近开始使用 Akka Scala 编码 遇到了以下问题 通过范围内的隐式转换 例如 implicit def convertTypeAtoTypeX a TypeA TypeX TypeX just some kinda convers
  • 如果部署目标 < 基础 sdk,如何检查是否使用了不可用的方法?

    我想知道当部署目标低于基础 SDK 时 您如何检查代码是否不调用不可用的方法 可以在 SDK 等于部署目标的设备上运行应用程序 但我搜索一种更 自动 的方式 任何想法 问候 昆汀 最简单的方法是使用 IPHONE OS VERSION MA
  • 为什么我的 Cordova/PhoneGap iOS 应用程序在设备旋转时不旋转?

    我正在尝试做一个仅横向应用程序 https stackoverflow com questions 10996676 phonegap page has wrong rotation shows as portrait in landsca
  • Angular 7通过调用两次服务订阅方法进行通信

    我正在使用角度 尝试与非父子组件进行通信 所以我通过服务来传达它 服务 ts Istoggle false Output change EventEmitter lt boolean gt new EventEmitter toggle t
  • 如何在 LINQ 中执行 String.Replace?

    这是我正在尝试做的事情 但没有成功 我想打电话from x in list1 and join y in list2 where regex Match x Value Success 完成这些步骤后我需要打电话String Replace
  • AVAudioRecorder 标准化音量

    我有一个可以录制音频的应用程序 我想知道如何才能增加增益 有没有办法标准化音频或以某种方式放大它 谢谢 豪伊 看来我找到了解决方案 根据文档 AVAudioPlayer 音量可以在 0 0 到 1 0 之间 显然它可以设置为大于1 0的值
  • C 或 C++ 中未初始化的指针有用途吗?

    在其中一篇评论中这个问题 https stackoverflow com questions 1910832 c why arent pointers initialized with null by default 有人指出默认初始化 C
  • Kafka:隔离级别的影响

    我有一个用例 我需要 Kafka 分区中的 100 可靠性 幂等性 无重复消息 以及顺序保留 我正在尝试使用事务 API 来建立概念验证来实现这一目标 有一个名为 isolation level 的设置 我很难理解 In this arti
  • 为什么要使用除 div 以外的任何东西? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我想创建处理程序来捕获 Tomcat 上 Web 应用程序的所有日志,并且

    我想创建处理程序来捕获 Tomcat 上 Web 应用程序的所有日志 我创建了我的 Handler 类 编译它并安装 CATALINA HOME lib and common loader有这个目录 之后我修改了logging proper
  • 使用 AngularFire 从 Firestore 过滤数据

    我正在尝试使用 Angularfire 的查询集合从 Firestore 过滤数据 https github com angular angularfire2 blob master docs firestore querying coll
  • Android ListView数组索引过滤后越界

    我认为这是专家的问题 我接到电话getView with positon 出界来自ListView数据列表 当我使用适配器过滤器时会发生这种情况 过滤器publishResults 方法使用小于原始列表的过滤列表填充数据 当新的过滤列表时似
  • Django 管理中的自定义验证

    我有一个非常简单的 Django 应用程序 用于记录同事的讲座 由于它非常初级 所以我使用 Django 管理本身 这是我的 models py models py from django db import models class Le
  • 使用 JavaScript 动态创建复选框?

    我正在尝试使用以下 HTML JavaScript 动态创建一个复选框 有什么想法为什么它不起作用吗 div div
  • SSIS:如何将项目连接管理器移动到包中

    我有一个 2012 SSIS 项目 其中在项目级别定义了许多连接管理器 该项目还包括许多引用这些连接管理器的包 现在我想将我的项目转换为部署模型 但向导指定我需要删除项目中的连接管理器 这意味着将连接管理器移动到包中 如何将项目级连接管理器
  • Docker 容器在 systemd 启动后关闭

    由于某种原因 当使用 systemd 单元文件时 我的 docker 容器会启动 但会立即关闭 我尝试查找日志 但看不到任何有关发生这种情况的原因的指示 有没有人知道如何解决这个问题 找到显示正在发生的情况的日志 注意 当使用 docker