docker 修改时区

作者: gavin 分类: Docker 发布时间: 2025-08-12 17:21

方法 1:临时进入容器修改(重启后失效)

# 进入运行中的容器
docker exec -it [容器ID或名称] /bin/bash

# 在容器内执行(以设置上海时区为例)
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone

# 验证时区
date

方法 2:通过环境变量永久修改(需重启容器)

如果容器支持通过环境变量设置时区,可以通过docker run-e参数或docker-composeenvironment配置:

# 先停止容器
docker stop [容器ID或名称]

# 重新启动并设置时区环境变量
docker run -d --name [容器名称] -e TZ=Asia/Shanghai [镜像名]

方法 3:直接修改容器配置文件(高级用法)

首先找到容器的配置目录:

# 查找容器ID
docker inspect -f '{{.Id}}' [容器名称]

# 停止Docker服务
systemctl stop docker

# 编辑容器配置文件
vi /var/lib/docker/containers/[容器ID]/config.v2.json

在配置文件中找到Env数组,添加时区设置:

"Env": ["TZ=Asia/Shanghai", ...其他环境变量...],

重启 Docker 服务:

systemctl start docker

方法 4:构建新镜像时指定时区(推荐)

最彻底的方法是在构建镜像时就设置好时区,创建Dockerfile

FROM [基础镜像]
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

然后重新构建并运行容器。

选择哪种方法取决于你的使用场景,临时测试可用方法 1,长期运行建议用方法 2 或 4。