Docker 有个很不敌对的设定,就是没有默认将容器和宿主机进行工夫同步。
别离来查看一下宿主机和容器的工夫,通常 容器的工夫比宿主机要慢 8 小时:
[root@k8s-master conf]# date
2022 年 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]# date
2022 年 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