为什么你的容器没有自动重启?on-failure策略的5个常见配置陷阱

Docker基础教程(126)docker容器之自动重启容器:打工人福音!Docker容器“永生“秘籍:老板再也不用担心我的服务挂掉了 文深度剖析Docker容器自动重启机制,揭秘--restart策略的妙用。通过生动比喻和完整示例,讲解如何让容器拥有"打不死的小强"属性,实现服务高可用。从基础命令到Compose配置,从简单重启到健康检查,手把手教你打造自我修复的容器生态系统,确保服务7×24小时稳定运行,彻底告别半夜被告警吵醒的悲惨生活! 阅读详情

第一章:为什么你的容器没有自动重启?

当容器意外终止时,预期行为通常是根据配置自动重启。然而,许多开发者发现容器并未如预期那样恢复运行。这通常与容器的重启策略(Restart Policy)未正确设置有关。

检查重启策略配置

在 Docker 或 Kubernetes 环境中,必须显式定义重启策略。例如,在 Docker 中运行容器时,需使用 --restart 参数指定行为:
# 启动容器并设置自动重启策略
docker run -d \
  --restart=unless-stopped \
  --name my-container \
  nginx:latest
上述命令中的 unless-stopped 表示除非手动停止,否则容器将在退出后自动重启。其他可选值包括 no、on-failure 和 always。

常见重启策略对比

策略描述
no容器退出时不自动重启
on-failure仅在容器非正常退出(退出码非0)时重启,可限制重试次数
always无论退出状态如何,始终重启容器
unless-stopped始终重启,除非容器被手动停止

验证容器当前策略

可通过以下命令查看容器的重启策略设置:
# 查看容器详细信息中的 RestartPolicy 配置
docker inspect my-container | grep -i restart
输出将显示类似内容:
{
  "RestartPolicy": {
    "Name": "always",
    "MaximumRetryCount": 0
  }
}
若策略为 no,则容器不会自动重启。此时应重新运行容器并指定合适的策略。
  • 确保使用正确的 --restart 参数启动容器
  • 在 Kubernetes 中,应通过 Pod 的 restartPolicy 字段控制(默认为 Always)
  • 宿主机重启或守护进程异常也可能影响容器恢复,需结合 systemd 或编排工具管理

第二章:on-failure重启策略的核心机制与常见误解

2.1 on-failure策略的工作原理:退出码决定重启行为

容器的重启策略中,on-failure 是一种基于退出码判断是否重启的关键机制。当容器非正常退出时,Docker 会检查其退出码,若不为0,则触发重启动作。
退出码与重启逻辑
退出码是进程终止时返回给操作系统的状态值。通常:
  • 退出码0表示成功执行,不会重启;
  • 非0退出码(如1、2、137等)表示异常,将触发重启。
配置示例
version: '3'
services:
  app:
    image: myapp
    restart: on-failure
    # 可选:限制最大重启次数
    deploy:
      restart_policy:
        condition: on-failure
        max_attempts: 3
上述配置中,容器仅在非0退出时重启,且最多尝试3次。该策略适用于批处理任务或希望避免无限循环崩溃的场景。

2.2 非零退出码≠触发重启:哪些情况被系统忽略

在某些场景下,即使进程返回非零退出码,系统也不会触发重启机制。这通常由配置策略或运行环境决定。
被忽略的典型场景
  • 一次性任务(One-off Jobs):如数据库迁移脚本,执行完毕后无论成功与否均不重启;
  • 预检探针失败:健康检查中短暂异常可能被容忍;
  • 手动停止的服务:用户主动终止被视为意图明确,不会自动恢复。
配置示例与逻辑分析
restart: on-failure
restart-retry-limit: 3
上述配置表示仅在失败时重启,且最多重试3次。超过限制后,即使进程崩溃也不会再拉起。
系统行为决策表
场景是否重启原因
Job 已完成但退出码非零否任务生命周期已结束
超过最大重启次数否防止无限循环
容器 OOM Kill是资源异常视为可恢复错误

2.3 restart参数的完整取值对比:always、unless-stopped与on-failure差异

在Docker容器生命周期管理中,`restart`策略决定了容器在退出或系统重启后的恢复行为。不同取值适用于不同的服务类型和可靠性需求。
核心取值说明
  • always:无论退出状态如何,始终自动重启容器
  • unless-stopped:除非被手动停止,否则始终重启
  • on-failure:仅当容器以非0状态码退出时重启(可选设置重试次数)
典型配置示例
version: '3'
services:
  web:
    image: nginx
    restart: unless-stopped
该配置确保容器在宿主机重启后自动启动,但若管理员执行docker stop则不再重启,适合生产环境长期运行服务。
策略对比表
策略系统重启后启动手动停止后是否重启崩溃后重启
always是是是
unless-stopped是否是
on-failure是否仅失败时

2.4 容器健康检查失败是否触发on-failure重启?实践验证结果

在Docker中,restart: on-failure 策略仅在容器以非零状态退出时触发重启,而健康检查(HEALTHCHECK)失败并不会导致容器退出。
实验验证过程
使用以下 Dockerfile 构建测试镜像:
FROM alpine
CMD while true; do echo "running"; sleep 10; done
HEALTHCHECK --interval=5s --timeout=3s --start-period=5s --retries=1 \
  CMD exit 1
该配置中健康检查始终失败(exit 1),但主进程持续运行。
关键结论
  • 健康检查失败仅改变容器健康状态为 unhealthy;
  • 容器仍处于运行状态(running),不会触发 on-failure 重启;
  • 只有当进程异常退出(如崩溃、返回非零码)时,on-failure 才生效。
因此,健康检查机制需与编排系统(如Kubernetes)结合,才能实现基于健康状态的自动恢复。

2.5 Docker引擎版本差异对on-failure判断逻辑的影响

不同版本的Docker引擎在处理容器重启策略时,对`on-failure`条件的判定存在细微差异,尤其体现在退出码捕获和重试次数计算上。
行为差异对比
  • Docker 18.09及以下:仅当容器非正常退出(exit code ≠ 0)时触发on-failure重启
  • Docker 19.03+:引入了更精确的信号终止检测,支持区分SIGKILL与SIGTERM
配置示例
{
  "RestartPolicy": {
    "Name": "on-failure",
    "MaximumRetryCount": 3
  }
}
该配置在19.03以上版本中会严格记录每次失败尝试,而在旧版本中可能忽略短暂崩溃。
版本兼容性建议
引擎版本最大重试支持信号感知
≤18.09有限否
≥19.03完整是

第三章:配置文件中容易忽视的关键字段

3.1 restart: on-failure未生效?检查docker-compose.yml语法正确性

在使用 Docker Compose 部署服务时,若配置 `restart: on-failure` 未按预期触发重启机制,首要排查方向应为配置文件的语法正确性。
常见YAML缩进错误
Docker 对 YAML 缩进极为敏感。以下为正确写法示例:
version: '3.8'
services:
  app:
    image: nginx
    restart: on-failure
上述配置中,`restart` 必须与 `image` 处于同一层级,且前缀两个空格。若缩进错误,Docker 将忽略该指令而不报错。
支持的重启策略对照表
策略触发条件适用场景
no从不重启调试阶段
on-failure非0退出码时重启批处理任务
always任何终止均重启常驻服务
确保 `on-failure` 拼写无误且未被覆盖。某些部署环境会通过守护进程默认策略覆盖容器级设置。

3.2 exit_code条件限制:如何设置最大重试次数(on-failure:3)的实际效果

在Docker Compose中,通过restart: on-failure:3可限定容器仅在非零退出码时最多重启3次。
配置示例与行为解析
service:
  app:
    image: my-app
    restart: on-failure:3
该配置表示:若容器因异常(exit code ≠ 0)退出,将尝试重启,但累计失败3次后不再重试。例如,程序因内存溢出或未捕获异常退出,前3次会自动恢复,第4次则永久停止。
重试机制对照表
失败次数是否重启说明
1是首次失败,触发第一次重试
3是仍在允许范围内
4否超过最大重试阈值
此策略平衡了容错性与资源保护,避免无限重启导致系统负载过高。

3.3 依赖服务启动顺序导致的早期退出被误判为“失败”

在微服务架构中,主服务常依赖数据库、缓存等外部组件。若这些依赖未就绪,主服务可能因连接超时而提前退出,被容器编排系统误判为“启动失败”。
典型场景分析
当 Kubernetes 启动 Pod 时,若应用在依赖服务(如 MySQL)尚未可用时尝试连接并失败退出,健康检查机制会标记容器为 CrashLoopBackOff,但实际上服务逻辑并无缺陷。
解决方案:引入启动探针与重试机制
livenessProbe:
  tcpSocket:
    port: 8080
  initialDelaySeconds: 60
  periodSeconds: 10
startupProbe:
  tcpSocket:
    port: 8080
  failureThreshold: 30
  periodSeconds: 10
上述配置通过 startupProbe 延长启动容忍时间,避免因依赖服务初始化慢导致误判。
  • 使用指数退避重试连接依赖服务
  • 结合启动探针(Startup Probe)延长初始化窗口
  • 分离就绪性与存活性检查逻辑

第四章:典型故障场景与排错方法论

4.1 应用短暂启动失败后不再重启:日志分析与时间窗口判断

在容器化环境中,应用启动失败后的频繁重启可能导致资源浪费和雪崩效应。为避免此类问题,需结合日志分析与时间窗口机制判断是否继续重启。
失败模式识别
通过解析应用启动日志,可识别出短暂性错误(如依赖超时)与永久性错误(如配置缺失)。例如:

2025-04-05T10:23:01Z ERROR failed to connect to database: context deadline exceeded
2025-04-05T10:24:02Z FATAL config.yaml not found: open /etc/app/config.yaml: no such file
前者可能具备重试价值,后者则无需重复尝试。
时间窗口控制策略
采用滑动时间窗口统计失败次数。若在5分钟内失败超过3次,则停止自动重启:
时间窗口最大尝试次数冷却时间
5分钟3次30分钟
该机制防止系统陷入无限重启循环,同时保留恢复可能性。

4.2 容器因资源限制(OOM)退出时on-failure是否起作用

当容器因内存溢出(OOM, Out-of-Memory)被系统终止时,其退出码为 137。Docker 的重启策略 `on-failure` 仅在容器以非零退出码退出且不是由 OOMKilled 显式终止时生效。
退出码与重启策略判定
  • 退出码 137 表示进程被 SIGKILL 信号终止,通常由内核 OOM Killer 触发;
  • Docker 将 OOM 视为严重异常,默认不触发 on-failure 重启;
  • 若容器因应用逻辑崩溃(如退出码 1),on-failure 会按配置重试。
验证示例
docker run --memory=100m --restart=on-failure:3 alpine \
  sh -c "dd if=/dev/zero of=/tmp/file bs=1M count=200"
该命令限制内存为 100MB,并尝试分配 200MB 数据。容器将因 OOM 被杀,尽管设置了 on-failure:3,但 Docker 不会重启。
解决方案
合理设置容器内存限制与应用需求匹配,或使用 restart: always 确保重启,但需警惕资源耗尽风险。

4.3 自定义入口脚本错误导致反复崩溃但无重启的深层原因

当自定义入口脚本存在逻辑缺陷时,容器可能陷入“启动 → 崩溃 → 快速重启 → 再崩溃”的循环。然而,在某些运行时配置下,Kubernetes 或 Docker 并未触发预期的重启策略,导致服务长时间不可用。
常见错误模式
  • 脚本中未正确处理依赖就绪状态
  • 启动命令阻塞或陷入无限重试
  • 忽略信号捕获,无法响应终止指令
典型问题代码示例
#!/bin/sh
while ! nc -z db:5432; do
  echo "Waiting for database..."
  sleep 2
done
exec ./app  # 若app立即崩溃,且父进程退出,容器终止但可能不重启
该脚本在数据库未就绪时持续轮询,一旦应用启动后因异常退出,父 shell 进程也随之结束,容器进入终止状态。若 Pod 的 `restartPolicy` 配置不当(如 OnFailure 但退出码为0),则不会触发重启。
关键排查点
检查项建议值
restartPolicyOnFailure 或 Always
启动脚本是否使用 exec确保替换主进程

4.4 使用docker stop或API主动终止容器后on-failure策略的行为变化

当通过 docker stop 命令或 Docker API 主动停止容器时,Docker 会向容器内主进程发送 SIGTERM 信号,并在超时后发送 SIGKILL。这种终止方式被视为“正常退出”,即使容器返回非零退出码,on-failure 重启策略也不会触发。
on-failure 策略的触发条件
该策略仅在容器**非正常退出**时生效,即容器因内部错误、崩溃或意外中断导致退出(退出码非0且非人为终止)。若使用 docker stop,则退出码为 0 或由用户指定,被视为预期行为。
docker run --restart=on-failure:3 my-app
此命令设置容器最多重试3次,但仅在非人为终止的失败场景下生效。
行为对比表
终止方式是否触发 on-failure原因
docker stop否主动控制,视为正常退出
容器崩溃(panic/segfault)是非零退出码且非人为干预

第五章:构建高可用容器化服务的最佳实践建议

合理设计 Pod 健康检查机制
Kubernetes 依赖 liveness 和 readiness 探针判断容器状态。不合理的配置可能导致服务误重启或流量进入未就绪实例。
livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 10
readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10
  failureThreshold: 3
上述配置确保应用启动后有足够时间初始化,同时避免将请求路由到尚未准备好的实例。
实施多区域部署与节点亲和性策略
为提升容灾能力,应跨多个可用区部署工作节点,并通过拓扑分布约束实现负载均衡。
  • 使用 topologyKey: topology.kubernetes.io/zone 分散 Pod
  • 设置反亲和性规则防止关键服务集中于单个节点
  • 结合云厂商的自动伸缩组(Auto Scaling Group)实现弹性扩容
例如,在生产环境中部署 Redis 集群时,强制副本分布在不同机架上可显著降低单点故障风险。
优化资源配置与限制
未设置资源 limit 的 Pod 可能引发“资源饥饿”,影响同节点其他服务。应根据压测结果设定合理值。
服务类型CPU RequestCPU LimitMemory Limit
API Gateway200m500m512Mi
Background Worker100m200m256Mi
启用自动恢复与滚动更新策略
通过配置 Deployment 的 maxUnavailable 和 maxSurge 参数,可在保证可用性的前提下平滑升级。

用户提交新镜像 → CI/CD 触发部署 → 滚动替换旧 Pod(保留最小可用数)→ 流量逐步迁移 → 监控指标验证 → 完成更新

Linux systemd服务自动恢复:重启策略与状态管理实战 systemd服务自动恢复本质上是面向生产环境的状态管理能力,其核心在于理解进程生命周期、退出语义与依赖拓扑。不同于简单启用开机自启,真正的高可用需结合Restart=策略(如on-failure、always)、StartLimit节流机制及After/Wants/BindsTo等依赖建模,解决启动失败、崩溃恢复、上游就绪等待等典型问题。本文围绕systemd服务单元配置展开,深入解析RestartSec、KillMode、Type=notify、OnFailure等关键参数的技术原理与工程取舍,并提供可 阅读详情

相关推荐

3.6KW储能双向逆变器(原理图PCB源码)

通过百度网盘分享的文件:优快云 3.6KW储能双向逆变器 链接:https://pan.baidu.com/s/18NN6KnpywFUIDtAQ4b1LTg?pwd=csdn 提取码:csdn

2401_86562087的博客 2183

Linux服务自动重启的工程化实践:从systemd配置到故障自愈

Linux服务自动重启是保障系统高可用的基础能力,其核心在于进程生命周期管理与依赖协调。systemd通过Restart策略、启动时序控制(如After/Requires)、健康前置检查(ExecStartPre)和资源限制机制,构建起一套可校准的反馈控制回路。不同于简单的开机自启,真正的服务韧性需应对crash或 reboot两类典型故障场景,并在MySQL依赖、网络就绪、路径敏感等复杂条件下保持稳定。本文聚焦生产级systemd服务单元配置,覆盖无依赖脚本、数据库耦合服务、SSH隧道守护及Java批处理

weixin_30416871的博客 434

Zemax操作16--激光谐振腔(含晶体)

谐振腔(含晶体)

lzy750750的博客 8314

在飞牛nas中docker使用nas挂载的硬盘问题(docker开机后自动重启)

该文描述了飞牛NAS系统中外接硬盘挂载与Docker服务启动的时序问题及解决方案。系统启动时,Docker服务先于磁盘挂载完成初始化,导致容器无法访问预设存储路径。作者通过创建systemd服务单元文件(tinymeng.service)来解决该问题:1)将服务配置为在特定磁盘挂载完成(local-fs.target)后执行;2)设置40秒延迟确保挂载完成;3)通过启动脚本(tinymeng_power_on.sh)重启受影响的Docker容器。该方法有效解决了容器因挂载时序问题导致的存储访问异常。

qq_37639246的博客 1165

关于自制的《航空学报》latex模板(非官网模板)

《航空学报》的官网只提供了word模板,并且该期刊投稿只需要pdf版本不需要源文件。为方便latex爱好者撰写论文,提供该模板及说明给广大科研人士~

qq_37105055的博客 4692

香橙派5Max + Realsense D435i + Fast-Drone-250:手把手教你搭建一个完整的无人机视觉开发环境

本文详细介绍了如何利用香橙派5Max、Realsense D435i深度相机和Fast-Drone-250项目搭建完整的无人机视觉开发环境。从硬件连接到ROS配置,再到项目部署与性能优化,提供全栈式实战指南,助力开发者快速实现SLAM算法验证和自主导航功能开发。

weixin_30879169的博客 460

`docker run --restart no,always,on-failure,unless-stopped`笔记250406

用于配置容器的自动重启策略,当容器意外退出时,Docker 会根据策略自动重新启动容器。这是确保服务高可用的重要参数。语法 可选策略 默认值,容器退出后不会自动重启。使用示例容器崩溃时自动重启(最多重试 3 次) 始终自动重启(适合关键服务) 除非手动停止,否则自动重启 1. 总是自动重启 场景:需要容器始终保持运行,即使被手动停止(除非显式执行 )。 注意:如果容器因错误退出(如内部崩溃),会无限重启。 2. 仅在失败时重启 场景:容器正常退出时(如任务完成)无需重启,仅在崩溃

kfepiza的博客 2014

手把手教你安装 Vivado2019.2(附安装包)

Vivado 2019.2 作为 Xilinx 公司发布的一款设计套件版本,具有多个显著的优点,以下是对其优点的详细归纳

dpwkj的博客 1万+

群辉dsm7.2 container manager 添加镜像

里面修改一下registry-mirrors,按。就可以docker pull 镜像了。改完按esc,然后输入。直接ssh登录上后,

u011118939的博客 1091

「UG/NX」BlockUI 树列表(回调函数)

官方对树控件提供了21种回调函数,树的一些操作可以在这些回调函数中进行操作。

何曾参静谧的博客 1330

ICC2: place阶段的clock network delay

设置了set_clock_latency之后,即便没长tree,也会有反标值,显示为clock network delay(ideal)和设置的clock latency值,需要注意的是同时设置set_clock_latency和set_clock_latency -source,clock network delay(ideal)值是二者叠加的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 316

Docker Compose on-failure策略全揭秘(你真的用对了吗?)

掌握Docker Compose服务重启策略on-failure,精准应对容器异常退出。适用于调试阶段或依赖外部服务的场景,仅在容器非正常退出时重启,节省资源并提升稳定性。结合restart条件与最大重试次数配置,实现高效容错管理。你真的用对了吗?值得收藏

PixelShoal的博客 883

踩坑实录:C#上位机YOLOv11从2FPS到45FPS,ONNX Runtime GPU加速全解析

算力迁移:将推理核心从CPU迁移至GPU(核心提速手段);内存复用:避免重复分配/释放内存,减少GC压力;维度固定:工业场景固定输入分辨率,关闭动态维度;资源限制:合理限制GPU/CPU/内存占用,避免资源耗尽;解耦设计:推理线程与UI线程解耦,避免跨线程问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 570

避开Docker重启策略的5个坑:从on-failure到unless-stopped的进阶指南

本文深入解析Docker容器重启策略的5个常见误区,从on-failure到unless-stopped的配置细节,帮助开发者避免生产环境中的潜在风险。通过实验数据揭示不同策略的实际行为差异,并提供结合健康检查的最佳实践方案,确保容器服务的稳定性和可靠性。

2a4s6d8f0g的博客 79

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Docker Compose服务稳定性提升,你必须知道的5个重启陷阱

掌握Docker Compose重启条件,有效提升服务稳定性。本文解析5大常见重启陷阱及应对策略,涵盖开发、生产环境应用场景,帮助你合理配置restart策略,避免循环重启与资源浪费。运维优化必读,值得收藏。

GatherLume的博客 599

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Docker Compose重启策略避坑手册:90%开发者都忽略的关键细节

掌握Docker Compose的重启条件,避免服务异常重启。详解restart参数配置与实际应用场景,涵盖always、on-failure等策略的核心区别与最佳实践。精准控制容器行为,提升部署稳定性,值得收藏。

LogicWander的博客 743

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Systemd Restart策略详解:on-failure与always的选型逻辑

Systemd服务重启机制是Linux系统可靠性保障的核心环节,其本质是对进程生命周期状态的精准响应。理解Restart参数需从进程退出码、终止信号和启动阶段三重原理切入:非零退出码并非全被识别,SIGTERM等受控信号不触发on-failure,而ExecStartPre失败亦不激活重启。技术价值在于平衡自愈能力与故障可见性——on-failure适用于高自检、强优雅退出的服务(如PostgreSQL),always则成为Node.js、Nginx等行为不可预测服务的兜底保障。典型应用场景包括配置错误恢复

weixin_34409357的博客 431

Systemd Restart=on-failure 与 always 核心差异与生产选型指南

Systemd 的 Restart 策略是守护进程生命周期管理的核心机制,其本质是基于进程退出码(exit code)和终止信号(signal)的状态映射决策引擎。on-failure 仅在非零退出码或未捕获信号时触发重启,强调‘失败导向’;always 则无视退出状态,实现无条件重启,适用于真正需永续运行的守护进程。该机制直接决定服务韧性、故障恢复能力与系统稳定性,在 WSL2、Docker 容器及 Ubuntu 生产环境中尤为关键。合理配置 RestartSec、StartLimitIntervalSe

weixin_33862993的博客 270

Node.js 开发必备:nodemon 自动重启原理与实战配置

nodemon 是 Node.js 本地开发中实现热重载(hot reload)的核心工具,其本质是基于操作系统原生文件监听机制(如 inotify、kqueue、ReadDirectoryChangesW)构建的进程管理器,而非低效轮询。它通过监听源码文件变更,触发优雅终止(SIGTERM/SIGUSR2)与隔离启动,保障服务平滑重启。技术价值在于零侵入、高自动化(autorestart)、灵活配置(configuration)和跨框架兼容性,广泛应用于 Express、Koa、Next.js 等各类 N

449

技术陷阱的系统化识别与防御:从失效模式到自动化防护

在软件工程实践中,‘陷阱’并非偶然错误,而是特定技术栈、业务场景与操作序列交汇产生的可复现失效模式。其本质是状态漂移、时序幻觉、资源幻觉或契约越界等底层原理在真实系统中的具象表现。理解这些原理有助于构建可观测、可验证、可迁移的问题诊断能力。技术价值在于将经验碎片升维为结构化知识——通过描述(明确触发阈值与失效表征)、示例(真实上下文快照)和解法(分层干预+三层验证)形成闭环。典型应用场景包括Code Review标准化、CI/CD静态检查嵌入、APM告警精准归因及个人知识库建设。本文聚焦‘陷阱’作为独立知识

weixin_30555515的博客 430

Fontsource 中的 Caramel 字体:一款融合三种变体的手写体脚本字体的安装与 OpenType 特性解析

Caramel 是一款由 Robert Leuschke 设计、收录于 Fontsource 开源字体注册表([registry/data/families/google/caramel](https://link.gitcode.com/i/9008177e661ba27ee9799d61b7317187))的手写体(Handwriting / Script)字体。它最大的特点是**在最新版本中

gitblog_00545的博客 651

Watchtower 完全指南:用 Go 实现 Docker 容器基础镜像自动化更新的实用方案

Watchtower 是一个用于自动化 Docker 容器基础镜像更新的进程:当你在 Docker Hub 或自建镜像仓库中推送新镜像后,Watchtower 会自动拉取新镜像、优雅地关闭旧容器,并以最初部署时相同的参数重启容器。本文以仓库 [README.md](https://link.gitcode.com/i/4f94f22f8ca04740cc9941fbd1b39e00) 为骨架,结合

gitblog_00708的博客 246

Docker容器停止后启动:start、restart、run区别与排错

Docker 容器本质上是围绕 PID 1 主进程运行的隔离进程,主进程退出后状态会进入 Exited,`docker ps -a` 与退出码可帮助判断停止原因。理解这一生命周期后,`docker start` 更适合唤醒已有容器,`docker restart` 用于运行中原地重启,`docker run` 则会创建新容器,选错命令可能造成配置丢失或数据风险。配合 `docker logs`、`docker inspect` 能定位启动即退、端口冲突、OOM 137 等问题,而通过 `--restart`

weixin_33755649的博客 254

OpenStack on Kubernetes生产部署实战:控制面容器化与排障复盘

容器化编排技术正在重塑传统云平台的控制面运维模式。在Kubernetes调度与自愈机制的基础上,将OpenStack各组件以容器方式运行,能够显著降低控制平面的故障恢复时间,将原本小时级的故障处置压缩到分钟级,同时为滚动升级、弹性伸缩提供标准化路径。这一架构选择并非简单替换物理机,而是需要围绕无状态API服务与有状态基础设施的边界、网络平面隔离、存储接入设计等关键环节进行整体规划。在实际生产落地中,MariaDB、RabbitMQ等有状态组件的容器化部署需特别注意高可用陷阱,Neutron网络代理的调度策略

weixin_33913332的博客 364

Docker Compose 实战:Web 应用多容器协同部署与避坑指南

Docker Compose 是现代 Web 应用容器化部署的核心编排工具,它超越单容器运行的局限,通过声明式 YAML 文件定义服务间网络、依赖、配置与持久化等契约关系。其核心价值在于实现服务拓扑建模、启动顺序控制与健康就绪判断,解决前端(React)、网关(Nginx)、后端(Express)及数据库(PostgreSQL)等多组件协同通信难题。技术上依托内置 DNS 解析、自定义网络、healthcheck 机制和 profiles 环境隔离,支撑开发、测试、生产全生命周期管理。本文深入解析 dock

weixin_33726313的博客 323
上一篇: 【容器编排必知必会】:彻底搞懂docker-compose down --volumes的底层机制
下一篇: Docker Compose环境变量优先级完全手册(含3大典型误用案例与修复方案)
VarFlow
博客等级 码龄1年 164粉丝 2189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值