Docker 笔记 - Docker 容器和宿主机时间同步

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

你可能感兴趣的:(Docker 笔记 - Docker 容器和宿主机时间同步)