前几天遇到这样一个业务场景,数据库运行在docker 中,docker 的市区是utc 所以就跟北京时间相差8个小时。但是又不能重新运行一个容器,只能保证数据库运行状态,并把宿主机的时区复制给docker 容器。很苦恼,

首先我先把宿主机的时区改成啦CST 北京时间。然后把宿主机的时区复制给docker 容器。命令如下

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

当然也可以进入容器进行修改时区(不过我的容器修改的时候总是报/etc/localtime 文件只读,不让修改。所以就用了上面的方法),命令如下

首先添加所有的时区
然后再修改时区

apk add tzdata 
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
echo "Asia/Shanghai" > /etc/timezone

当然,在容器内改,也很麻烦,每次启动新的容器那么就要修改,所以在dockerfile 中修改更好啦。命令如下

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

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐