调整Docker容器内的时区
容器内的时区问题会影响到服务打印的日志, 所以设置时区是很有必要的, 设置容器内时区的方法一般有:
- 设置 TZ 环境变量
- 挂载主机的时区文件
- 直接修改镜像的 dockerfile,将时区默认配置在镜像里
设置 TZ 环境变量
docker 环境下, 增加 -e 参数:
1 | docker run --name test --rm -ti -e TZ=Asia/Shanghai debian date |
这种方法也可以写在 Dockerfile 里面, 增加一行:
1 | ENV TZ Asia/Shanghai |
经测试: Debian CentOS 镜像可以支持这种方案
Ubuntu Alpine 不支持这种方案
挂载主机的 timezone 和 localtime
Docker 环境下, 增加 -v 参数:
1 | docker run --name test --rm -ti -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro alpine date |
适用于大部分镜像, 特点是和主机保持一致, 缺点是依赖主机的环境
通过 build 镜像修改
Alpine
将以下代码添加到 Dockerfile 中:
1 | ENV TZ Asia/Shanghai |
Debian
Debian 基础镜像 中已经安装了 tzdata 包,我们可以将以下代码添加到 Dockerfile 中:
1 | ENV TZ=Asia/Shanghai |
Ubuntu
Ubuntu 基础镜像中没有安装了 tzdata 包,因此我们需要先安装 tzdata 包。
我们可以将以下代码添加到 Dockerfile 中。
1 | ENV TZ=Asia/Shanghai |
CentOS
CentOS 基础镜像 中已经安装了 tzdata 包,我们可以将以下代码添加到 Dockerfile 中。
1 | ENV TZ Asia/Shanghai |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 杂烩饭!
评论