修改docker容器时间的详解
修改docker容器时间详解
修改docekr容器时间有两种方法:
- 使用挂载/etc/localtime 时间(简单)
- 使用libfaketime进行修改(复杂)
1. 使用映射时间修改
在docker启动的时候,挂载目录,通过修改系统时间从而修改容器时间,需要注意系统时间会影响其他容器
docker run --name mysql -p 3306:3306 -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=2020 -d --restart=always mysql:5.7
注意这一句 -v /etc/localtime:/etc/localtime ,使宿主机时间和docker时间一致
我们只需要通过 date -s “2021-01-21 02:30:16” 修改宿主机时间,通过 docker exec -it mysql date,可以查看两者时间相同
数据库中插入一条数据,也是使用当前时间
注意:修改时间后,经测试,容器不需要重启就会变为当前时间
2. 使用libfaketime
这种修改方式,宿主机时间和容器时间互相不会影响。相当于容器单独模拟出一个时间
如果直接在docker exec -it 进入容器,使用libfaketime运行后进行修改,容器中的服务只有重新运行才会使用该时间。如果重启容器,该时间修改就会失效。通过我们创建容器的时候会运行一个主程序(PID为1),这个程序down调,容器也会挂掉,所以一般通过dockerfile将libfaketime打进新镜像,直接运行镜像。
一般我们容器会有两种基于ubuntu和centos(两个运行命令不一样)
ubuntu:
FROM openjdk:8u212
RUN apt-get update
RUN apt-get install git
RUN git clone https://github.com/wolfcw/libfaketime.git
RUN apt-get install -y gcc
RUN apt-get install -y make
WORKDIR /libfaketime/src
RUN make && make install
centos:
FROM mysql:5.7
WORKDIR /
RUN yum update
RUN yum -y install git
RUN git clone https://github.com/wolfcw/libfaketime.git
RUN yum -y install gcc
WORKDIR /libfaketime/src
RUN make && make install
然后通过 docker build -t 【镜像名称】:【镜像版本】 ./ ,打包成为新的镜像。
docker run --name test -p -e LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 -e FAKETIME="@2000-01-01 10:30:00" -d test:v1
LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
-e FAKETIME=“@2000-01-01 10:30:00”
这两句就是更改时间的,有无@的区别:**"@2000-01-01 10:30:00"时间会递增;“2000-01-01 10:30:00”**时间不会变
还有一个参数:-e FAKETIME_STOP_AFTER_SECONDS=10 运行多长时间后停止,停止后时间会恢复为正常时间
也可以用dockr-compose传入参数(environment下面):
注意openjkd:11镜像会导致cpu占用过高,需要更换为其他jdk11版本
相关文章
- 【干货】手机QQ及Qzone速度优化实践
- 专访Linux基金会执行董事Jim Zemlin:开源从曲高和寡到妇孺皆知
- 挨踢部落故事汇(18):程序猿与代码的基情
- Android Studio中使用apt
- 开启HSTS让浏览器强制跳转HTTPS访问
- 你的车有了这样的车载操作系统,溜到飞起
- 如何让深度学习在手机应用上也能加速跑?看完这篇文章你就知道了
- 挨踢部落故事汇(17):我与永恒之蓝战斗的两天两夜
- 专访DeepMap COO罗维:自动驾驶时代,创业公司如何在高精度地图领域突围?
- Access数据库转Excel工作簿2法
- 5.20程序猿:女神等你来勾搭
- Android GC原理探究
- 世界上还没有人工智能?我们被深度学习骗了吗
- 让问答更自然 - 基于拷贝和检索机制的自然答案生成系统研究
- 数据平台上的计算能力:哪些GPU更适合深度学习和数据库?
- 第十年的选择,咕咚到底选择了什么?
- 挨踢部落故事汇(16):技术人疲倦期的最佳实践
- iOS AFNetworking框架HTTPS请求配置
- 挨踢部落故事汇(14):分享助力运维能力的提升
- 51CTO专家门诊第203期 日本地震警示:认识容灾体系确保数据安全