Docker Store 上的官方镜像基本上都默认是 UTC 时区,需要我们手动设置一下。

Dockerfile

如果你使用 Dockerfile 制作自己的镜像,那么只需要在 Dockerfile 中加入下面两句就可以了 :

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

修改成功。以后这个镜像生成的 container 就都是北京时间了。

同步主机时区

利用 volume 可以在启动一个 container 时指定使用主机的时区文件,就可以把 container 的时区与主机同步

docker run -v /etc/localtime:/etc/localtime IMAGE:TAG

运行中的 container

如果你不想新建镜像或者重启 container,那么也可以直接进入 container 修改。执行 :

docker exec -it container_name_or_id bash

进入 container 之后执行:

echo “Asia/Shanghai” > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

注意,此处仍然需要注意不同发行版命令的差别。