【Docker】配置 docker 容器内独立时间

背景

  • 在工作中常用 docker 作为测试环境,docker 内部的时间是依赖宿主机的
  • 如果有修改时间的测试需求是需要提供给 docker 权限(–privileged=true),但这样的修改时间方法是会将宿主机的时间一并修改的,带来很大的风险

解决方法

  • 使用 libfaketime,它的原理是当进程调用系统调用获取结果时,它截取该调用并返回一个 FAKETIME

实现步骤

  • 下载 libfaketime 安装包
    a. 从 github 上 wolfcw/libfaketime 下载 libfaketime-0.9.7 版本并进行解压编译(更高的版本自测失败)
    b. 或者 点击这里下载我已经编译完成的上传在 CSDN 上的文件

  • 以我上传的资源为例,将文件进行解压后,拷贝到 /usr/lib/ 下,就可以直接使用了

使用方法

  • 使用示例 1: 单个进程使用LD_PRELOAD=/usr/lib/libfaketime-0.9.7/src/libfaketime.so.1 FAKETIME="2025-06-18 00:00:00" date
  • 使用示例 2:将 LD_PRELOAD=/usr/lib/libfaketime-0.9.7/src/libfaketime.so.1 写入 .bashrc 中,单个进程使用 FAKETIME="2025-06-18 00:00:00" date
  • 使用示例3:将 LD_PRELOAD=/usr/lib/libfaketime-0.9.7/src/libfaketime.so.1 FAKETIME="2025-06-18 00:00:00" 写入 .bashrc 中,所有进程使用 date
  • 根据你想要它作用的范围来选择其中一个方法即可

注: 此方法不适用于用 go 或 java 编写的程序

你可能感兴趣的:(Problem,Docker,docker,容器,运维)