解决docker与服务器时间不一致问题
问题描述
部署在docker上的web程序,获取当前时间时,与服务器时间相差四个多小时
解决方法
在dockfile中加
1
2
3
4
5# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone修改后的dockerfile文件
1
2
3
4
5
6
7
8
9FROM openjdk:8
MAINTAINER lcf
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
ADD boss-server.jar boss-server.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","boss-server.jar"]
其他解决方法
dockerfile中添加
1
2
3
4# CentOS
RUN echo "Asia/shanghai" > /etc/timezone
# Ubuntu
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimedocker run 添加时间参数
1
2# 实例1
docker run -p 3306:3306 --name mysql -v /etc/localtime:/etc/localtime宿主机直接执行命令给某个容器同步时间
1
2
3
4
5
6# 方法1:直接在宿主机操作
docker cp /etc/localtime 【容器ID或者NAME】:/etc/localtime
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 【容器ID或者NAME】:/etc/localtime
# 方法2:登录容器同步时区timezone
ln -sf /usr/share/zoneinfo/Asia/Singapore /etc/localtime
完成后,再通过date命令进行查看当前时间
1 | select now() from dual; |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.