博客 / 詳情

返回

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
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.