+
+ [筆記] 修改 docker 容器內的時區 - Change Timezone in Docker
+ + + +最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ + + + + +diff --git a/content/post/change-timezone-in-docker.md b/content/post/change-timezone-in-docker.md new file mode 100644 index 00000000..d437ca91 --- /dev/null +++ b/content/post/change-timezone-in-docker.md @@ -0,0 +1,149 @@ +--- +title: "[筆記] 修改 docker 容器內的時區 - Change Timezone in Docker" +date: 2019-05-21T17:25:15+08:00 + +noSummary: false +featuredImage: "https://h.cowbay.org/images/post-default-3.jpg" +categories: ['筆記'] +tags: ['docker','timezone'] +author: "Eric Chang" +--- + +最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致 + +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的.... + + +之前因為沒有要上線,所以這個問題可以當烏龜忽略過去 + +不過測試了一陣子的librenms 打算正式上線了 + +又不想重作一次,導致累積滿久的圖表資料都消失 + +所以開始找尋方法來面對這個問題 + +本來看了這篇 https://www.arthurtoday.com/2016/07/how-to-setup-docker-container-timezone-host.html + +想說來試試看好了 + +不過呢,一開始依照這篇的說明,在docker-compose.yml 內加入 +``` +web: + image: jarischaefer/docker-librenms + hostname: librenms + ports: + - "8001:80" + - "44301:443" + volumes: + - /etc/hosts:/etc/hosts + - /etc/localtime:/etc/localtime:ro + environment: + - TZ="Asia/Taipei" +``` + +重起之後沒作用 0rz + +於是我又加入了 + +``` + volumes: + - /etc/hosts:/etc/hosts + - /etc/localtime:/etc/localtime:ro + - /etc/timezone:/etc/timezone:ro +``` + +結果啟動直接報錯誤了.. + +看一下 log + +``` +May 21 09:09:12 bbs012 syslog-ng[12]: syslog-ng starting up; version='3.13.2' +*** Running /etc/my_init.d/librenms_100_cron... +*** Running /etc/my_init.d/librenms_101_ssl... +*** Running /etc/my_init.d/librenms_102_ipv6... +*** Running /etc/my_init.d/librenms_103_timezone... +/etc/my_init.d/librenms_103_timezone: line 4: /etc/timezone: Read-only file system +*** /etc/my_init.d/librenms_103_timezone failed with status 1 + +*** Killing all processes... +``` + +所以這個檔案不能改成 ro ,不過如果不能唯獨,那啟動docker的時候應該會被蓋掉吧? + +先來看一下那個 librenms_103_timezone 在幹什麼好了 + +``` +docker exec -it librenms_web_1 cat /etc/my_init.d/librenms_103_timezone +#!/bin/bash -e + +if [ -n "$TZ" ]; then + ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + + if [ ! -f /etc/php/7.3/cli/conf.d/100-timezone.ini ]; then + echo "date.timezone=$TZ" > /etc/php/7.3/cli/conf.d/100-timezone.ini + fi + + if [ ! -f /etc/php/7.3/fpm/conf.d/100-timezone.ini ]; then + echo "date.timezone=$TZ" > /etc/php/7.3/fpm/conf.d/100-timezone.ini + fi +fi +2019-05-21 17:33:46 [mini@s013 librenms]$ +``` + +OK ,這裡的確是用傳進來的 $TZ 在設定timezone 沒錯 + +可是我前面已經改過 docker-compose.yml + +有把 TZ帶進來了啊?再來確認一下 + +``` +docker exec -it librenms_web_1 cat /etc/timezone +"Asia/Taipei" + +``` + +咦,沒錯啊? 欸斗,等等,那兩個 "" 有點刺眼... + +跟本機的比對一下看看 + +``` +2019-05-21 17:36:20 [mini@s013 librenms]$ docker exec -it librenms_web_1 cat /etc/timezone +"Asia/Taipei" +2019-05-21 17:36:23 [mini@s013 librenms]$ cat /etc/timezone +Asia/Taipei +2019-05-21 17:37:10 [mini@s013 librenms]$ +``` + +嗯,的確,本機的格式的確不包含那兩個 "" + +那就改掉再來試試看吧...改成底下這樣 + +``` + environment: + - TZ=Asia/Taipei + +``` + +重起 docker ,然後確認時間看看 + +``` +2019-05-21 17:39:00 [mini@s013 librenms]$ docker-compose down;docker-compose up -d +Stopping librenms_web_1 ... done +Stopping librenms_mysql_1 ... done +Removing librenms_web_1 ... done +Removing librenms_mysql_1 ... done +Removing network librenms_default +Creating network "librenms_default" with the default driver +Creating librenms_mysql_1 ... done +Creating librenms_web_1 ... done +2019-05-21 17:39:22 [mini@s013 librenms]$ docker exec -it librenms_web_1 cat /etc/timezone +Asia/Taipei +2019-05-21 17:39:42 [mini@s013 librenms]$ docker exec -it librenms_web_1 date +Tue May 21 17:39:48 CST 2019 +2019-05-21 17:39:48 [mini@s013 librenms]$ +``` + +OK ,果然沒有問題了! + +雖然是小小的"" ,還是要特別注意啊! + diff --git a/public/404.html b/public/404.html index 20276832..b9593594 100644 --- a/public/404.html +++ b/public/404.html @@ -115,6 +115,10 @@
+
+ 最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ + + + + +
-
- 這兩天在弄兩台Freenas ,準備當作Proxmox 的Storage & Server Backup
- -因為伺服器的限制,只能接六個SATA,我接了六個2T的硬碟做raid10
- -然後把Freenas 安裝在隨身碟上
- -不過會一直出現Smartd failed to start 的錯誤訊息
- - - - - - - -
+
+ 這兩天在弄兩台Freenas ,準備當作Proxmox 的Storage & Server Backup
+ +因為伺服器的限制,只能接六個SATA,我接了六個2T的硬碟做raid10
+ +然後把Freenas 安裝在隨身碟上
+ +不過會一直出現Smartd failed to start 的錯誤訊息
+ + + + + + + +
-
- 最近在重新規劃前人留下的backup爛攤子 -各個伺服器統一備份到一台backup storage -想說如果每天能夠看到backup storage的磁碟用量的話 -就可以抓出備份空間成長速度、推估需要多大的磁碟空間 -找了一些工具,結果發現 durep 這個 ubuntu 內建的工具 -基本上可以滿足我的需求
- - - - - -
+
+ 最近在重新規劃前人留下的backup爛攤子 +各個伺服器統一備份到一台backup storage +想說如果每天能夠看到backup storage的磁碟用量的話 +就可以抓出備份空間成長速度、推估需要多大的磁碟空間 +找了一些工具,結果發現 durep 這個 ubuntu 內建的工具 +基本上可以滿足我的需求
+ + + + + +
+
+ 最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ + + + + +
-
- 想做一個 10G 的 LAB 環境出來已經很久了。
- -只是礙於10G RJ45的卡太貴了,然後光纖的種類又太複雜
- -如果直接在淘寶購買,很怕會買錯(什麼LC/FC LC/LC 多模單模 單芯雙芯 SFP/SFP+ 又是什麼光模塊的一大堆規格)
- -所以一直沒有付諸行動。
- -硬體的工作很久沒碰了,剛好在蝦皮看到有個賣家在賣 mellanox 的X2網卡,以在台灣的價格來說,算很便宜的 (550)
- -聊了一下,跟他請教了關於線材、光纖模塊的問題,回答也都很快很到位
- -就直接下訂了兩張網卡、兩個光纖模塊、一條LC/LC 光纖線
- -就是到貨有點久,等了兩個禮拜左右,一直到昨天東西才寄到
- -今天就花了點時間測試一下
- - - - - - - -
+
+ 想做一個 10G 的 LAB 環境出來已經很久了。
+ +只是礙於10G RJ45的卡太貴了,然後光纖的種類又太複雜
+ +如果直接在淘寶購買,很怕會買錯(什麼LC/FC LC/LC 多模單模 單芯雙芯 SFP/SFP+ 又是什麼光模塊的一大堆規格)
+ +所以一直沒有付諸行動。
+ +硬體的工作很久沒碰了,剛好在蝦皮看到有個賣家在賣 mellanox 的X2網卡,以在台灣的價格來說,算很便宜的 (550)
+ +聊了一下,跟他請教了關於線材、光纖模塊的問題,回答也都很快很到位
+ +就直接下訂了兩張網卡、兩個光纖模塊、一條LC/LC 光纖線
+ +就是到貨有點久,等了兩個禮拜左右,一直到昨天東西才寄到
+ +今天就花了點時間測試一下
+ + + + + + + +
+
+ 最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ + + + + +
-
- 這兩天在弄兩台Freenas ,準備當作Proxmox 的Storage & Server Backup
- -因為伺服器的限制,只能接六個SATA,我接了六個2T的硬碟做raid10
- -然後把Freenas 安裝在隨身碟上
- -不過會一直出現Smartd failed to start 的錯誤訊息
- - - - - - - -
+
+ 這兩天在弄兩台Freenas ,準備當作Proxmox 的Storage & Server Backup
+ +因為伺服器的限制,只能接六個SATA,我接了六個2T的硬碟做raid10
+ +然後把Freenas 安裝在隨身碟上
+ +不過會一直出現Smartd failed to start 的錯誤訊息
+ + + + + + + +
-
- 最近在重新規劃前人留下的backup爛攤子 -各個伺服器統一備份到一台backup storage -想說如果每天能夠看到backup storage的磁碟用量的話 -就可以抓出備份空間成長速度、推估需要多大的磁碟空間 -找了一些工具,結果發現 durep 這個 ubuntu 內建的工具 -基本上可以滿足我的需求
- - - - - -
+
+ 最近在重新規劃前人留下的backup爛攤子 +各個伺服器統一備份到一台backup storage +想說如果每天能夠看到backup storage的磁碟用量的話 +就可以抓出備份空間成長速度、推估需要多大的磁碟空間 +找了一些工具,結果發現 durep 這個 ubuntu 內建的工具 +基本上可以滿足我的需求
+ + + + + +
+
+ 最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ ++之前因為沒有要上線,所以這個問題可以當烏龜忽略過去
+ +不過測試了一陣子的librenms 打算正式上線了
+ +又不想重作一次,導致累積滿久的圖表資料都消失
+ +所以開始找尋方法來面對這個問題
+ +本來看了這篇 https://www.arthurtoday.com/2016/07/how-to-setup-docker-container-timezone-host.html
+ +想說來試試看好了
+ +不過呢,一開始依照這篇的說明,在docker-compose.yml 內加入
+ +web:
+ image: jarischaefer/docker-librenms
+ hostname: librenms
+ ports:
+ - "8001:80"
+ - "44301:443"
+ volumes:
+ - /etc/hosts:/etc/hosts
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ - TZ="Asia/Taipei"
+
+
+重起之後沒作用 0rz
+ +於是我又加入了
+ + volumes:
+ - /etc/hosts:/etc/hosts
+ - /etc/localtime:/etc/localtime:ro
+ - /etc/timezone:/etc/timezone:ro
+
+
+結果啟動直接報錯誤了..
+ +看一下 log
+ +May 21 09:09:12 bbs012 syslog-ng[12]: syslog-ng starting up; version='3.13.2'
+*** Running /etc/my_init.d/librenms_100_cron...
+*** Running /etc/my_init.d/librenms_101_ssl...
+*** Running /etc/my_init.d/librenms_102_ipv6...
+*** Running /etc/my_init.d/librenms_103_timezone...
+/etc/my_init.d/librenms_103_timezone: line 4: /etc/timezone: Read-only file system
+*** /etc/my_init.d/librenms_103_timezone failed with status 1
+
+*** Killing all processes...
+
+
+所以這個檔案不能改成 ro ,不過如果不能唯獨,那啟動docker的時候應該會被蓋掉吧?
+ +先來看一下那個 librenms_103_timezone 在幹什麼好了
+ +docker exec -it librenms_web_1 cat /etc/my_init.d/librenms_103_timezone
+#!/bin/bash -e
+
+if [ -n "$TZ" ]; then
+ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+ if [ ! -f /etc/php/7.3/cli/conf.d/100-timezone.ini ]; then
+ echo "date.timezone=$TZ" > /etc/php/7.3/cli/conf.d/100-timezone.ini
+ fi
+
+ if [ ! -f /etc/php/7.3/fpm/conf.d/100-timezone.ini ]; then
+ echo "date.timezone=$TZ" > /etc/php/7.3/fpm/conf.d/100-timezone.ini
+ fi
+fi
+2019-05-21 17:33:46 [mini@s013 librenms]$
+
+
+OK ,這裡的確是用傳進來的 $TZ 在設定timezone 沒錯
+ +可是我前面已經改過 docker-compose.yml
+ +有把 TZ帶進來了啊?再來確認一下
+ +docker exec -it librenms_web_1 cat /etc/timezone
+"Asia/Taipei"
+
+
+
+咦,沒錯啊? 欸斗,等等,那兩個 “” 有點刺眼…
+ +跟本機的比對一下看看
+ +2019-05-21 17:36:20 [mini@s013 librenms]$ docker exec -it librenms_web_1 cat /etc/timezone
+"Asia/Taipei"
+2019-05-21 17:36:23 [mini@s013 librenms]$ cat /etc/timezone
+Asia/Taipei
+2019-05-21 17:37:10 [mini@s013 librenms]$
+
+
+嗯,的確,本機的格式的確不包含那兩個 “”
+ +那就改掉再來試試看吧…改成底下這樣
+ + environment:
+ - TZ=Asia/Taipei
+
+
+
+重起 docker ,然後確認時間看看
+ +2019-05-21 17:39:00 [mini@s013 librenms]$ docker-compose down;docker-compose up -d
+Stopping librenms_web_1 ... done
+Stopping librenms_mysql_1 ... done
+Removing librenms_web_1 ... done
+Removing librenms_mysql_1 ... done
+Removing network librenms_default
+Creating network "librenms_default" with the default driver
+Creating librenms_mysql_1 ... done
+Creating librenms_web_1 ... done
+2019-05-21 17:39:22 [mini@s013 librenms]$ docker exec -it librenms_web_1 cat /etc/timezone
+Asia/Taipei
+2019-05-21 17:39:42 [mini@s013 librenms]$ docker exec -it librenms_web_1 date
+Tue May 21 17:39:48 CST 2019
+2019-05-21 17:39:48 [mini@s013 librenms]$
+
+
+OK ,果然沒有問題了!
+ +雖然是小小的”” ,還是要特別注意啊!
+ +
+
+ 最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ + + + + +
-
- 這兩天在弄兩台Freenas ,準備當作Proxmox 的Storage & Server Backup
- -因為伺服器的限制,只能接六個SATA,我接了六個2T的硬碟做raid10
- -然後把Freenas 安裝在隨身碟上
- -不過會一直出現Smartd failed to start 的錯誤訊息
- - - - - - - -
+
+ 這兩天在弄兩台Freenas ,準備當作Proxmox 的Storage & Server Backup
+ +因為伺服器的限制,只能接六個SATA,我接了六個2T的硬碟做raid10
+ +然後把Freenas 安裝在隨身碟上
+ +不過會一直出現Smartd failed to start 的錯誤訊息
+ + + + + + + +
-
- 最近在重新規劃前人留下的backup爛攤子 -各個伺服器統一備份到一台backup storage -想說如果每天能夠看到backup storage的磁碟用量的話 -就可以抓出備份空間成長速度、推估需要多大的磁碟空間 -找了一些工具,結果發現 durep 這個 ubuntu 內建的工具 -基本上可以滿足我的需求
- - - - - -
+
+ 最近在重新規劃前人留下的backup爛攤子 +各個伺服器統一備份到一台backup storage +想說如果每天能夠看到backup storage的磁碟用量的話 +就可以抓出備份空間成長速度、推估需要多大的磁碟空間 +找了一些工具,結果發現 durep 這個 ubuntu 內建的工具 +基本上可以滿足我的需求
+ + + + + +
+
+ 最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ + + + + +
+
+ 最近一直在玩一些docker,不過老是會碰到歪果扔寫的東西,時區都不一致
+ +有的用 UTC,有的用localtime,就是沒碰到用 Asia/Taipei 的….
+ + + + + +