Docker 有个很不敌对的设定,就是没有默认将容器和宿主机进行工夫同步。

别离来查看一下宿主机和容器的工夫,通常容器的工夫比宿主机要慢 8 小时

[root@k8s-master conf]# date2022年 03月 31日 星期四 17:08:00 CST[root@k8s-master conf]# docker exec -it 06dd47f16a43 bash -c "date"Thu Mar 31 08:58:58 UTC 2022

所以须要手动设置二者的工夫同步。

总共有三种状况须要设置工夫同步,别离是:

  • 正在运行的容器
  • 自定义容器镜像
  • 应用第三方镜像

接下来看看这三种状况的解决形式。

1、对于曾经运行中的容器的解决形式:将宿主机的 /etc/localtime 文件复制给容器。

[root@k8s-master conf]# docker exec -it 06dd47f16a43 bash -c "ls -l /usr/share/zoneinfo/Asia/Shanghai"-rw-r--r--. 1 root root 582 Jan 26  2021 /usr/share/zoneinfo/Asia/Shanghai

再来查看二者的工夫,曾经同步了:

[root@k8s-master conf]# docker exec -it 06dd47f16a43 bash -c "date"Thu Mar 31 17:11:17 CST 2022[root@k8s-master conf]#[root@k8s-master conf]# date2022年 03月 31日 星期四 17:11:18 CST

2、如果是自定义的镜像,倡议在 dockerfile 中就提前解决好。以 CentOS 为例,增加如下配置:

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3、如果是应用第三方的镜像创立容器,倡议创立容器时应用 -v 参数让容器应用宿主机的 /etc/localtime 文件。如下所示:

docker run --name <容器名称> -v /etc/localtime:/etc/localtime