修改Docker容器的时间和宿主时间一致
在使用docker时,发现时间和宿主机的时间相差8小时
- 宿主机使用的是CST时间
- 容器使用的是UTC时间
1、查看宿主机时间
当发现宿主机时间不符时,我们可以使用两种方法来修改时间
- 系统时间修改
date -s [修改时间]
#将系统日期设定为2021年04月06日
date -s 04/06/2021
#时间设为11:39:09
date -s 11:39:09
修改完后执行:clock -w
,强制将时间写入COMS!
- 时区修改
date -R [先查看时区]
# 修改时区 将Asia/shanghai-上海时区写入当前时区
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# cp -f 修改时区可能报错 需要使用ln -sf
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#提示是否覆盖 输入Y回车 然后date查看时区和时间(CST,中国时区)
注意: 修改之后,需要将时间强制写入COMS! 否则重启之后又会还原
2、查看容器时间
- 先进入容器,并查看容器时间
docker exec -it [CONTAINER ID] /bin/bash
- 容器时间与宿主机的时间不同,修改时间
cd /etc/
#在容器中修改下/etc/localtime文件的名称,避免冲突。
mv localtime localtime_old
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
宿主主机和容器时间一致
3、timedatectl相关命令
- 显示系统的当前时间和日期
timedatectl
- 查看当前时区
timedatectl | grep Time
- 查看所有可用的时区
timedatectl list-timezones
- 根据地理位置找到本地的时区
timedatectl list-timezones | egrep -o "Asia/S.*"
- 在Linux中设置本地时区
timedatectl set-timezone "Asia/Shanghai"
- 使用和设置协调时间
timedatectl set-timezone UTC
- 设置日期和时间
timedatectl set-time '12:16:40 2021-04-06'
- 只设置日期
timedatectl set-time 20210406
- 只设置时间
timedatectl set-time 12:16:40
- 将Linux系统时钟同步到远程NTP服务器
NTP即
Network Time Protocol
(网络时间协议),是一个互联网协议,用于同步计算机之间的系统时钟。timedatectl实用程序可以自动同步你的Linux系统时钟到使用NTP的远程服务器。注意,必须在系统上安装NTP以实现与NTP服务器的自动时间同步。
- 开启自动时间同步到远程NTP服务器
timedatectl set-ntp true
- 禁用NTP时间同步到远程NTP服务器
timedatectl set-ntp false