docker容器的時間問題
阿新 • • 發佈:2018-12-19
問題一: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"