docker 修改时区
方法 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-compose
的environment
配置:
# 先停止容器 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。