1. 程式人生 > >docker容器的時間問題

docker容器的時間問題

問題一:docker時間與宿主機時間不一致

原因是docker容器和宿主機使用了不同的時區。

如宿主機使用CST(China Standard Time) 而docker容器使用UTC(Coordinated Universal Time),那麼兩者就會相差8小時。

解決方法一:建立容器時掛載宿主機localtime檔案到容器內,新增命令

-v  /etc/localhost:/etc/localhost:ro
解決方法二:把時區設定加入到Dockerfile中

問題二:僅修改docker容器中的時間,而不影響宿主機的時間

docker 容器都是輕量級的,它們會共享相同的linux核心,而time& date 是kelnel的函式,所有修改docker容器的時間也會

造成宿主機時間被修改。

在github上有一個libfaketime專案,我們可以使用LD_PRELOAD這個環境變數使date連線這個專案編譯的庫來“欺騙”應

用,達到修改docker容器時間的目的,具體做法:

1.pull專案:https://github.com/wolfcw/libfaketime/

2.使用make命令編譯src下的程式碼,得到動態庫檔案:libfaketime.so.1

3.執行 docker exec -it <containter_id | containter_name> /bin/bash進入容器

4.使用如下命令修改程式執行時的連結,並設定時間為2天前。

	export LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME="-2d"