參考:https://blog.csdn.net/eumenides_/article/details/94719944html
https://muguang.me/it/2658.htmlpython
使用docker部署容器時,輸出日誌時間會比系統正常時間少8小時mysql
啓動一個容器sql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql3306 mysql:5.7
查看日誌docker
docker logs mysql3306
能夠看到日誌比系統時候少8小時ide
登陸容器查看時區和時間(於日誌時間一致)spa
root@217fd4ef2dc7:/# date Fri Aug 16 06:55:12 UTC 2019 root@217fd4ef2dc7:/# date -R Fri, 16 Aug 2019 06:55:15 +0000
刪除容器.net
docker kill mysql3306 docker rm mysql3306
新建一個容器使用連接讓容器使用系統時區3d
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
-v連接系統時區日誌
能夠在宿主機查看這兩個時區文件
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小時
docker logs mysql3306
登陸容器查看
./docker_in.sh mysql3306
日期和時區設置是正常的
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時區,須要修改爲系統時區
MySQL [(none)]> show variables like "log_timestamps"; +----------------+-------+ | Variable_name | Value | +----------------+-------+ | log_timestamps | UTC | +----------------+-------+ 1 row in set (0.01 sec)
臨時修改
set global log_timestamps="SYSTEM";
再次查看
MySQL [(none)]> show variables like "log_timestamps"; +----------------+--------+ | Variable_name | Value | +----------------+--------+ | log_timestamps | SYSTEM | +----------------+--------+ 1 row in set (0.00 sec)
使用錯誤的密碼登陸一次產生日誌再次查看日誌時間對了
設置永久生效,修改MySQL配置文件my.cnf
[mysqld] log_timestamps=SYSTEM
若是是使用docker-compose啓動則須要修改配置文件添加如下內容
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才能生效
docker-compose down docker-compose up -d