关于docker时区与真实有时间差8个小时

   测试给我提了一个bug,发布时间的时候为什么不对呢? 我看了一下, 发布时间与现在的时间一直差8个小时, 后来上网查询, 才知道docker时区和宿主机时区是不相同的.

   继续上网查询, 使用挂载方法: 

docker run -ti -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime java sleep 1d bash

 上面的方法还是不行, 查看了Docker修改默认时区这篇文章之后, 使用它的方法是可行的:

  由于我的基础镜像采用的是Alpine系统

所以我在Dockerfile添加了以下的:

RUN apk --no-cache add tzdata  && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone 

跑起来之后, 效果与预期一样

-------------------------------------2019.01.28-------------------------------------

由于docker中的mysql是正在运行, 不能删除数据, 需要另外一个方法解决:

ln -sf /usr/share/zoneinfo/Asia/Shanghai    /etc/localtime

(采用此方法, 重启之后有效)

或者

cp /usr/share/zoneinfo/Asia/Shanghai    /etc/localtime

重启容器即可

------------------------------------2019.01.28 下午-----------------------

以下这种方式, Jenkins构建之后跑docker的时候太慢了,用了下面的方法优化(在创建的时候指定参数来解决)

RUN apk --no-cache add tzdata  && \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone 

# 创建并运行容器,通过 -e TZ="Asia/Shanghai" 设置时区

docker run -e TZ="Asia/Shanghai" -d -p 80:80 --name nginx nginx

引用了修改Docker容器默认时区

你可能感兴趣的:(关于docker时区与真实有时间差8个小时)