1. 程式人生 > >Docker Java應用日誌時間和容器時間不一致

Docker Java應用日誌時間和容器時間不一致

摘要:

1)在docker容器和系統時間不一致是因為docker容器的原生時區為0時區,而國內系統為東八區。
2)還有容器中執行的java應用打出的日誌時間和通過date -R方式獲取的容器標準時間有八個小時時間差。
也就是容器時間和系統時間一致,但是部署的應用和容器時間不一致。Tomcat中部署java應用為例。

1、 docker新建容器時,為了保證容器時區和系統時區相同,需要掛載docker的/etc/localtime到系統的/etc/localtime

-v /etc/localtime:/etc/localtime:ro 

在系統路徑 /usr/share/zoneinfo 下游很多時區檔案,可以自己設定,copy時區檔案到 /etc 重新命名localtime檔案即可,如果容器沒有掛載時區目錄到系統目錄,也可進入容器內部手動複製/usr/share/zoneinfo下和系統時區相同檔案,到/etc 重新命名localtime檔案
例如:使用上海時區
1)進入容器

docker exec -t -i c360cc412528 /bin/bash    // c360cc412528 為容器id

2)在/usr/share/zoneinfo目錄下找上海時區

cd  /usr/share/zoneinfo/Asia(亞洲-)

3)複製上海時區到 /etc 重新命名localtime檔案

copy Shanghai /etc/localtime 

4)重啟容器後,容器時間和系統時間一致。
注意:建議掛載docker的/etc/localtime到系統的/etc/localtime

2、 docker容器中執行的java應用打出的日誌時間和通過date -R方式獲取的容器標準時間有八個小時時間差。 java應用和容器時間不一致,相差8個小時。這時需要大家進入容器修改tomcat目錄下的 lib/catalina 檔案找到 JAVA_OPTS,增加下面設定:

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8  -Duser.timezone=GMT+08"

重啟容器,應用時間和容器時間就一致了。

注意下:進入容器後,有的人無法使用vim命令編輯,這時需要這麼做:

   apt-get update    //同步 /etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的索引,這樣才能獲取到最新的軟體包。
   apt-get intall vim   //安裝vim包

之後就可以用vim編輯命令了。

相關推薦

Docker Java應用日誌時間容器時間一致

摘要: 1)在docker容器和系統時間不一致是因為docker容器的原生時區為0時區,而國內系統為東八區。 2)還有容器中執行的java應用打出的日誌時間和通過date -R方式獲取的容器標準時間有八個小時時間差。 也就是容器時間和系統時間一

Docker Tomcat應用日誌時間容器時間一致解決辦法

Docker 宿主機、容器、Tomcat應用日誌時間不一致解決辦法 說明: 1.在docker容器和系統時間不一致是因為docker容器的原生時區為0時區,而國內系統為東八區。 2.還有容器中執行的java應用打出的日誌時間和通過date -R

docker學習7--宿主機容器時間一致問題

    啟動一個以centos為基礎的映象,進入容器內date '+%Y-%m-%d %H:%M:%S'檢視時間,發現容器時間和宿主機不一致。     一臺宿主機可以有多個docker容器,宿主機的

為什麼mysql資料庫的時間頁面展示一致?:不同資料庫在不同時區讀取timestamp型別資料值不同

說明:資料庫用的mysql,而且型別是timestamp 結論: 1、Oracle和MySQL中的timestamp的作用是不同的 Oracle中,TIMESTAMP是對date的更高精度的一種儲存,是作為datetime的延展,但它不儲存時區資訊 Oracle

java UTC時間local時間相互轉換

互轉 cat color except static 相互轉換 clas AS mil 1、local時間轉UTC時間 /** * local時間轉換成UTC時間 * @param localTime * @return *

在linux服務器下日誌提取的python腳本(實現輸入開始時間結束時間打包該時間段內的文件)

number init temp mktime tar -zcvf .py uri 指令 cal 1.需求:近期在提取linux服務器下的日誌文件時總是需要人工去找某個時間段內的日誌文件,很是枯燥乏味,於是乎,我就想著用python結合linux指令來寫一個日誌提取的腳本,

java 專案時間伺服器時間一致

  今天線上專案關於時間的幾個任務都出了問題,檢視日誌發現日誌的時間不對,用的是log4j,日誌輸出的時間都早了很長時間。 1 首先先登上伺服器查看了伺服器的系統時間 linux下 date命令 時間正確的。 2 瀏覽網頁發現有個硬體時間,系統時間是指當前Linux Kernel中的時鐘,而硬體時鐘則是主

java獲得當前時間當前時間前30秒時間

import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; //獲得當前時間和當前時間前30秒時間 SimpleDateFormat df = new Sim

Java處理GMT時間UTC時間

時間標準簡介 UTC(世界標準時間) 協調世界時,又稱世界標準時間或世界協調時間,簡稱UTC(從英文“Coordinated Universal Time”/法文“Temps Universel Coordonné”而來),是最主要的世界時間標準

Java時間處理(UTC時間本地時間轉換)

文章內容引用來源: 前言: 本文主要對UTC、GMT、CST等時間概念做簡單的介紹,比較實用的在於本文最後一個小知識點:帶時區格式的時間和本地時間格式兩者之間的轉換方法,再次只是對簡單情況做處理,如果需要處理複雜的時間轉換,可以百度找一下jar包。 1

java根據出生日期當前時間計算年齡

1、獲取系統時間計算年齡 public static int getAgeByBirthday(Date birthday) {Calendar cal = Calendar.getInstance();if (cal.before(birthday)) {throw ne

簡潔版:java獲取時間之後,對比開始時間結束時間,對比活動狀態

@Transient    當前時間的獲取 public String getStatus(){Date now = new Date();if (getStartTime().before(now) && getEndTime().after(now))

最最最高效方式 獲取當天的開始時間結束時間Java

public static void main(String[] args) { SimpleDateFormat fmt1= new SimpleDateFormat("yyyy-

Java UTC(GMT)時間Date時間轉換

概念 : 格林尼治標準時間(GMT,舊譯“格林威治平均時間”或“格林威治標準時間”)是指位於倫敦郊區的皇家格林尼治天文臺的標準時間,因為本初子午線被定義在通過那裡的經線。 協調世界時(UTC)  英文:Coordinated Universal Time ,別稱:世界統一

JAVA UTC時間本地時間

UT - 世界時 Universal Time 世界時是最早的時間標準。 在1884年,國際上將1s確定為全年內每日平均長度的1/8.64×104。以此標準形成的時間系統,稱為世界時,即 UT1。 1972年國際上開始使用國際原子時標,從那以後,經過格林

java輸出執行開始時間,結束時間執行時間

在程式開發中經常會用到比較程式碼執行效率問題,可以用System.currentTimeMillis()方法來記錄一下 long start,end; start = System.current

日誌備份時間刪除日誌腳本實現

rsync exe 開始 分組 time 定時任務 script syn 命令 2019/2/25 星期一 需求:在生產上,要把服務器日誌傳到日誌備份服務器上 生產服務器上只保留7天前的日誌 用shell腳本實現 備份腳本為 [root@xxx scripts]# cat

utc時間local 時間互轉

python utc time local time python 1.utc 時間和 local 時間互轉#utc 轉本地時間def utcFlocaltime(utc_time): utc_time = utc_time + datetime.timedelta(hour

crontab執行時間系統時間一致

google 服務器 shanghai share crontab執行時間和系統時間不一致

ORACLE取周、月、季、年的開始時間結束時間

mil nth spa direction light 4.5 oracl afr oracle  1 取周的開始時間和結束時間 取周的開始時間。以星期一為開始。 SQL>S