目录
- 1. Linux 系统
- 1.1 通过 timedatectl 命令操作
- 1.2 直接修改 /etc/localtime 文件
- 2. Docker 容器中的 Linux
操作环境:
CentOS
/AlmaOS
MySQL Docker
镜像
1. Linux 系统
1.1 通过 timedatectl 命令操作
-
使用
timedatectl list-timezones
命令列出可用的时区列表,以便选择要设置的时区。 -
使用
timedatectl set-timezone
命令设置所选的时区。例如,要将时区设置为 “
Asia/Shanghai
”,您可以执行以下命令:sudo timedatectl set-timezone Asia/Shanghai
-
使用
timedatectl
命令验证时区设置是否已经生效:timedatectl
将看到类似以下输出:
Local time: Tue 2024-02-20 16:36:57 CST Universal time: Tue 2024-02-20 08:36:57 UTC RTC time: Tue 2024-02-20 08:36:57 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no
这表明时区已经成功设置为 "
Asia/Shanghai"
。 -
还可以通过
date
命令查看系统时间date # 输入如下: Tue Feb 20 16:41:03 CST 2024
1.2 直接修改 /etc/localtime 文件
如果 Linux
系统中没有 timedatectl
命令,也可以手动修改 /etc/localtime
文件来设置时区。
-
例如,要将时区设置为 “
Asia/Shanghai
”,可以执行以下命令:sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这将创建一个指向
/usr/share/zoneinfo/Asia/Shanghai
文件的符号链接,使时区设置为 “Asia/Shanghai
”。 -
最后,确保系统时间和硬件时间同步:
sudo hwclock --systohc
【注】
hwclock
是一个 Linux 命令,用于管理系统的硬件时钟(Hardware Clock)。硬件时钟是计算机硬件中的一个部分,用于记录系统时间。它通常是一个独立于操作系统的时钟电路,能够在系统关闭时保持运行,并持续记录时间 -
通过
date
命令查看系统时间date # 输入如下: Tue Feb 20 16:41:03 CST 2024
2. Docker 容器中的 Linux
如需创建时指定时区请参阅: Docker 创建容器并指定时区
下面的操作仅针对于已创建的容器:
一般 Docker
容器中的 Linux
都是最小化安装的,没有太多软件集,如果需要某些命令没有的话,也可以自己安装,但是会影响到容器的部分性能;而且该操作仅在此容器有效,在其他服务器运行镜像的时候就需要重新安装。
毕竟 Docker
容器中的也是 Linux
,所以与上面直接操作 Linux
系统的方式是一样的;下面以 直接修改 /etc/localtime 文件
为例:
-
先进入到容器中,
# 通过容器名称 docker exec -it containerName bash # 或通过容器的 id 标识 docker exec -it containerId bash
docker exec
更详细的操作参考:Docker 进入容器,并在容器内执行命令 -
例如,要将时区设置为 “
Asia/Shanghai
”,可以执行以下命令:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这将创建一个指向
/usr/share/zoneinfo/Asia/Shanghai
文件的符号链接,使时区设置为 “Asia/Shanghai
”。 -
重启容器
docker restart 容器名
-
然后进入容器,并通过 date 命令查看系统时间
date # 输入如下: Tue Feb 20 16:41:03 CST 2024
【注】这个操作仅在这个容器中有效,通过镜像新创建容器的时区还是会有问题,所以建议创建的时候直接指定时区,方法参考:Docker 创建容器并指定时区。