Docker容器的时区设置

在 docker 的使用时, 经常会 pull 下来一些官方镜像或第三方的镜像, 毕竟绝大部分自己做的镜像也是基于官方镜像而来的, 其中一些对时间比较敏感的应用可能会因为时区的问题而导致异常, 本篇文章介绍两类系统下时区的修改

CentOS/RedHat/Fedora

1
➜  ~ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

执行命令后立即生效

Ubuntu

1
➜  ~ echo "Asia/shanghai" > /etc/timezone

执行命令后立即生效

#特别说明

在测试中发现, Debian 系统虽然应该和 Ubuntu 划分为一类, 但是却需要使用 CentOS 的做法来修改时区

到底需要使用哪种方式来修改时区可以使用以下的小技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 首先进入到容器中
docker exec -it 6170cc378e95 /bin/bash

# 不管是哪个系统版本, 先查看当前的时区配置文件

# 如果是出现一堆"乱码" 最后还带有时区标识的就使用上面 CentOS 的方式修改时区
cat /etc/localtime
xxxxxxxxxxxxxx
UTC0


# 如果是直接出现 xxx/yyy 这种地区字符的结果, 那么就使用上面 Ubuntu 的方式修改时区
cat /etc/timezone
Asia/Shanghai