docker之容器日志输出与系统时间相差8小时解决办法

  参考:https://blog.csdn.net/eumenides_/article/details/94719944

       https://muguang.me/it/2658.html

  使用docker部署容器时,输出日志时间会比系统正常时间少8小时

  1,环境查看

  

  2,创建容器查看日志

  启动一个容器

1
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3306 mysql:5.7

   查看日志

1
docker logs mysql3306

   可以看到日志比系统时候少8小时

  登录容器查看时区和时间(于日志时间一致)

1
2
3
4
root@217fd4ef2dc7:/# date
Fri Aug 16 06:55:12 UTC 2019
root@217fd4ef2dc7:/# date -R
Fri, 16 Aug 2019 06:55:15 +0000

   删除容器

1
2
3
docker kill mysql3306
 
docker rm mysql3306

   新建一个容器使用链接让容器使用系统时区

1
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro --name mysql3306 mysql:5.7

   PS:2023-12-25测试好像只保留以下链接即可

1
-v /etc/localtime:/etc/localtime:ro

  

  -v链接系统时区

  可以在宿主机查看这两个时区文件

1
2
3
4
root@test-docker01:/nas/scripts# ll /etc/localtime
lrwxrwxrwx 1 root root 33 7月   7 06:05 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
root@test-docker01:/nas/scripts# cat /etc/timezone
Asia/Shanghai

   查看日志,时间还是相差8小时

1
docker logs mysql3306

 

  登录容器查看

1
./docker_in.sh  mysql3306

   日期和时区设置是正常的

1
2
3
4
root@f6a3ea6e7b42:/# date
Fri Aug 16 15:01:59 CST 2019
root@f6a3ea6e7b42:/# date -R
Fri, 16 Aug 2019 15:02:01 +0800

   MySQL使用记录日志还有一个设置需要修改

  登录MySQL查看,日志记录使用UTC时区,需要修改成系统时区

1
2
3
4
5
6
7
MySQL [(none)]> show variables like "log_timestamps";
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| log_timestamps | UTC   |
+----------------+-------+
1 row in set (0.01 sec)

   临时修改

1
set global log_timestamps="SYSTEM";

   再次查看

1
2
3
4
5
6
7
MySQL [(none)]> show variables like "log_timestamps";
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| log_timestamps | SYSTEM |
+----------------+--------+
1 row in set (0.00 sec)

   使用错误的密码登录一次产生日志再次查看日志时间对了

  设置永久生效,修改MySQL配置文件my.cnf

1
2
[mysqld]
log_timestamps=SYSTEM

   如果是使用docker-compose启动则需要修改配置文件添加以下内容

1
2
3
4
5
volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/data:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro

 

  同时修改mysql配置文件

  PS:如果docker-compose已经启动则添加配置重启无效需要删除容器再重新up才能生效

1
2
docker-compose down
docker-compose up -d

 

posted @   minseo  阅读(18467)  评论(5编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2018-08-16 zabbix监控主机CPU使用率
点击右上角即可分享
微信分享提示