docker容器挂载/etc/fstab导致定时任务不运行

背景

把宿主机的/etc/fstab文件挂载到容器的/etc/fstab,后面发现容器内的定时任务没有运行了。手动启动定时任务也无法运行了。

分析

/etc/fstab 是一个用于存储文件系统挂载信息的配置文件,它是 Linux 系统中非常重要的一个文件。fstab 的全称是 File System Table,在系统启动时,操作系统会读取这个文件,然后根据其中的配置自动挂载文件系统。

具体来说,/etc/fstab 文件包含了系统中各个文件系统的挂载点(mount point)、对应的设备、文件系统类型、挂载选项等信息。通过编辑这个文件,用户可以指定哪些设备需要在启动时挂载,以及挂载到哪个目录下、使用什么文件系统类型等。

在 /etc/fstab 中,每一行代表一个文件系统的挂载信息,通常包含以下几个字段:

设备文件或 UUID:表示要挂载的设备,可以是硬盘分区的设备文件路径(如 /dev/sda1)或设备的 UUID。

挂载点:设备挂载到的目录路径。

文件系统类型:设备上的文件系统类型,如 ext4、ntfs、vfat 等。

挂载选项:指定挂载时使用的选项,如读写权限、自动挂载等。

dump 标志:用于确定是否备份该文件系统。

pass 标志:用于指示文件系统检查顺序。

/etc/fstab文件是非常核心的文件。当将这个文件挂载到容器里,相当于用宿主机的磁盘配置替换了容器里的磁盘挂载配置文件。但是容器里的文件系统是与宿主机不同的。那么宿主机的fstab文件不能正常的指示容器的磁盘管理,就导致容器里的磁盘管理出错。

我们知道,文件系统是Linux的系统的核心,在Linux系统中,一切皆文件。文件系统都出了问题,Linux系统运行自然会出现问题。

文件系统出现问题后,Linux触发了紧急保护机制,也就是上图中的emergency mode,即救援模式,表示系统遇到了重大故障且无法自行恢复,需要进行救援。而前面的日志发现有大量的磁盘相关的日志。所以大致推断出是新增的fstab文件挂载导致的。

当 Linux 进入救援模式时,通常会表现出以下特征:

1.命令行界面:进入救援模式后,你将看到一个类似终端的命令行界面,通常显示有关系统状态和提示符。这种界面通常比正常的图形用户界面更为简单。

2.只读文件系统:救援模式下,文件系统通常以只读(read-only)模式挂载,以避免进一步损坏文件系统或数据。这意味着你不能进行写操作,如编辑文件或保存更改。

3.网络未连接:在救援模式下,通常不会自动连接网络,因此网络服务可能不可用,包括互联网访问和远程连接。

4.基本命令支持:在救援模式下,通常只加载了最基本的系统工具和命令,如文件系统检查工具、文本编辑器等。一些高级命令和服务可能不可用。

5.系统错误信息:通常会显示有关系统出现问题的错误信息或警告,以帮助诊断并修复系统故障。

6.需要手动操作:在救援模式下,通常需要手动执行一些操作来诊断和修复系统问题,比如修复启动问题、恢复损坏的文件系统等。

因此,像定时任务这些系统核心的服务也无法正常启动了。所以所有定时任务都不再运行了。

总结

/etc/fstab 是一个用于存储文件系统挂载信息的配置文件,它是 Linux 系统中非常重要的一个文件。此文件只针对一个文件系统起作用,不能将宿主机fstab和容器的fstab进行替换,否则会出现致命的错误。

来源:docker容器挂载/etc/fstab导致定时任务不运行-七秒鱼笔记

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值