关于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容器默认时区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值