
# 设置容器的时区
在使用容器的过程中，如果需要获取系统时间来进行日志记录、数据库存储等操作，容器内部时区不一致的问题可能会导致一系列的困扰。本文提供了多种解决容器内时区不一致问题的方案，请根据实际情况选择合适的方案进行操作。
- [场景一：容器与节点时区同步]
- [场景二：制作容器镜像时指定时区]
- [场景三：Java容器日志与容器、节点时区同步]
 #### 场景一：容器与节点时区同步
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)。
2. 在创建工作负载基本信息页面，开启"时区同步"，即容器与节点使用相同时区。完成其余配置后，创建该工作负载。 
   图1开启时区同步   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002276397969.png "点击放大")
   
   
   
3. 登录节点查询时区。 
   ```
   date -R
   ```
   命令行终端显示如下信息：
   ```
   Sat, 12 Apr 2025 16:58:47 +0800
   ```
   
   
4. 查询容器时区是否与节点保持一致。 
   使用kubectl命令查询Pod名称：
   ```
   kubectl get pod
   ```
   使用kubectl命令进入容器，其中*\<pod_name\>*为上一步中查询的Pod名称：
   ```
   kubectl exec -it <pod_name> -- /bin/bash
   ```
   查询容器时区：
   ```
   date -R
   ```
   命令行终端显示如下信息：
   ```
   Sat, 12 Apr 2025 16:59:23 +0800
   ```
   
   
 
 #### 场景二：制作容器镜像时指定时区
在构建容器镜像时，您可以在Dockerfile中设置时区文件，以解决单一容器内的时区不一致问题。在后续使用该镜像时，也不会再受到时区问题的困扰。
本文以制作CentOS容器镜像为例，介绍如何在制作容器镜像时指定时区。
1. 登录一台已安装Docker且支持访问公网的虚拟机。
2. 执行以下命令，新建Dockerfile文件。 
   ```
   vim Dockerfile
   ```
   
   
3. 按**i** 切换至编辑模式，写入以下内容，配置时区文件。
   
   ```
   FROM centos
   RUN rm -f /etc/localtime \
   && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
   && echo "Asia/Shanghai" > /etc/timezone
   ```
   按**Esc** ，输入**:wq**，保存文件并返回。
   
   
4. 执行以下命令，构建容器镜像。 
   ```
   docker build -t centos:v1 -f Dockerfile .
   ```
   
   
5. 查询当前节点时区。 
   ```
   date -R
   ```
   命令行终端显示如下信息：
   ```
   Sat, 12 Apr 2025 17:23:44 +0800
   ```
   
   
6. 查询容器时区是否与节点保持一致。 
   启动容器镜像并查看容器内时区，其中centos:v1为创建的容器镜像：
   ```
   docker run -it centos:v1 /bin/sh
   ```
   查询容器时区：
   ```
   date -R
   ```
   命令行终端显示如下信息：
   ```
   Sat, 12 Apr 2025 17:25:13 +0800
   ```
   
   
 
 #### 场景三：Java容器日志与容器、节点时区同步
开启容器和节点时区同步后，在容器中通过date -R命令获取的容器标准时间与节点保持一致。但是在Java应用中，Java使用系统默认时区来处理日期和时间，日志记录的时间仍可能与容器时间存在时区差异。以下步骤将通过Tomcat容器作为示例，详细介绍如何实现Java容器日志时间与节点时区的同步。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)。
2. 在创建工作负载基本信息页面，开启"时区同步"，即容器与节点使用相同时区。 
   图2开启时区同步   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002276397969.png "点击放大")
   
   
3. 在"容器配置 \> 环境变量"中添加以下环境变量： 
   - 环境变量名称：CATALINA_OPTS
   
   - 环境变量值：-Duser.timezone=GMT+08
   
   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002241548194.png "点击放大")
   
   
   
4. 完成其余配置后，创建该工作负载。
5. 单击工作负载栏中的"日志"按钮，查看日志中的时区是否与节点/容器同一时区。节点和容器的时区查看方式请参见[场景一：容器与节点时区同步]。
   
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002276427601.png "点击放大")
   
   
   
 
