Docker 修改镜像容器的时区
Docker 修改时区
出现场景
Mysql时间慢8小时 ,日志打印显示的时间慢8小时,数据库时间,nginx时间等等。。
出现原因
在 Docker Hub 中的官方镜像中,时区是使用了世界标准时间(UTC)。因为在中国使用,所以需要把时区改成东八区的。
解决方法
1. 修改运行容器时区(不能删除,不用dockerfile情况)
9a785c29ed24
为容器的CONTAINER ID
首先进入正在运行的容器
bash
1 | docker exec -it 9a785c29ed24 /bin/bash |
复制软连接文件
bash
1 | cp /usr/share/zoneinfo/PRC /etc/localtime |
查看时区是否已经更改
bash
1 | date |
时间与宿主机一样,就可以退出,并重启容器了
bash
1 | docker restart 9a785c29ed24 |
若此方法不行,就先通过
tzselect
设置选定Hong Kong时区
依次选 4) Asia > 13) Hong Kong > 1) Yes
2.随意操作情况
dockerfile中设置时区
Dockerfile中加入以下代码
bash1
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
复制宿主机到容器
bash1
docker cp /etc/localtime [容器ID或者NAME]:/etc/localtime