Docker 修改时区

出现场景

Mysql时间慢8小时 ,日志打印显示的时间慢8小时,数据库时间,nginx时间等等。。

出现原因

在 Docker Hub 中的官方镜像中,时区是使用了世界标准时间(UTC)。因为在中国使用,所以需要把时区改成东八区的。

解决方法

1. 修改运行容器时区(不能删除,不用dockerfile情况)

9a785c29ed24 为容器的CONTAINER ID

首先进入正在运行的容器

1
docker exec -it 9a785c29ed24  /bin/bash

复制软连接文件

1
cp /usr/share/zoneinfo/PRC /etc/localtime

查看时区是否已经更改

1
date

时间与宿主机一样,就可以退出,并重启容器了

1
docker restart 9a785c29ed24

若此方法不行,就先通过 tzselect 设置选定Hong Kong时区
依次选 4) Asia > 13) Hong Kong > 1) Yes

2.随意操作情况

dockerfile中设置时区

Dockerfile中加入以下代码

1
2
ENV TZ=Asia/Shanghai 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

创建容器时带上参数设置

在创建命令中加上 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime

复制宿主机到容器

1
docker cp /etc/localtime [容器ID或者NAME]:/etc/localtime