You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器内获取宿主机的最后重启时间?

在Docker容器内获取宿主机的重启时间/运行时长方法

在Linux宿主机上执行last reboot可以查看系统重启记录:

$ last reboot
reboot   system boot  4.15.0-142-gener Thu May 11 16:31   still running
...

wtmp begins Fri May  5 19:27:11 2023

但在Docker容器内执行last reboot会返回空结果,这是因为容器使用独立的/var/log/wtmp日志文件,和宿主机的不共享:

# last reboot

wtmp begins Mon Mar 27 09:55:22 2023

下面提供几种可行的方法在容器内获取宿主机的重启时间或运行时长:

  • 方法一:挂载宿主机的wtmp日志文件
    启动容器时将宿主机的/var/log/wtmp挂载到容器内对应路径,让容器的last命令能读取宿主机的重启记录:

    docker run -v /var/log/wtmp:/var/log/wtmp 你的镜像名称
    

    进入容器后执行last reboot,就能看到和宿主机一致的重启信息。注意要确保容器内用户拥有该文件的读取权限。

  • 方法二:通过/proc文件系统获取运行时长与重启时间
    宿主机的/proc/uptime文件记录了系统运行的总秒数,第一个数值即为运行时长(单位:秒)。启动容器时挂载宿主机的/proc目录:

    docker run -v /proc:/host/proc 你的镜像名称
    

    进入容器后执行以下命令查看格式化后的运行时长:

    cat /host/proc/uptime | awk '{print int($1/86400)"天 "int(($1%86400)/3600)"小时 "int(($1%3600)/60)"分钟"}'
    

    要计算宿主机的最后重启时间,可通过当前时间减去运行时长得到:

    date -d "@$(($(date +%s) - $(cat /host/proc/uptime | awk '{print int($1)}')))"
    
  • 方法三:借助Docker套接字(不推荐,权限较高)
    如果容器需要调用Docker命令,可以挂载宿主机的/var/run/docker.sock,并确保容器内安装了Docker客户端,再通过相关命令获取宿主机信息。但这种方法会赋予容器较高权限,存在安全风险,仅在必要时使用。

内容的提问来源于stack exchange,提问作者WurmD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:32:51