星期日, 6月 19, 2022

container 設定時區整理小記

container 設定時區整理小記


OS: openSUSE Leap 15.3


這篇文章的起因是因為在測試 zabbix 經由 telegram 推送通知時

發現通知時間的部份是使用 UTC time, 如果想要收到通知的時候上面的時間符合目前的時間

想法上解法有 2 個方向

  • 使用自訂訊息的部份, 標示 Problem started 時間為 UTC

  • 將 container 內的時區訂為自己所在地區的時區


今天這篇文章就是整理將 container 內的時區設定為目前時區的小記


先整理一下實體主機 openSUSE Leap 15.3 時區相關資訊


系統預設時區設定觀察

# cat  /etc/sysconfig/clock 


DEFAULT_TIMEZONE="US/Eastern"


本地時區設定觀察

# ls  -l  /etc/localtime

lrwxrwxrwx 1 root root 33 Nov 28  2021 /etc/localtime -> ../usr/share/zoneinfo/Asia/Taipei


現在的作業系統可以使用 timedatectl 來觀察相關設定

# timedatectl 


               Local time: Sun 2022-06-19 08:17:36 CST

           Universal time: Sun 2022-06-19 00:17:36 UTC

                 RTC time: Sun 2022-06-19 00:17:36    

                Time zone: Asia/Taipei (CST, +0800)   

System clock synchronized: yes                        

              NTP service: active                     

          RTC in local TZ: no



當然在 openSUSE 內, 最方便的作法就是使用

# yast2  timezone 來設定 :)



接下來回到 container 的部份


參考網路上的文章


原則上可以使用  -e TZ=Asia/Taipei 方式來設定 container 內的時區

但是前題是要安裝相關套件, 整理如下

  • openSUSE

    • 安裝 timezone 套件

      • 有 tzselect 指令可以執行

  • CentOS

    • 安裝 tzdata

  • Ubuntu

    • 安裝 tzdata


實際驗證

> docker  run  -it  opensuse/leap:15.3   /bin/bash


dfc4994abd1d:/ # date

Sun Jun 19 00:30:22 UTC 2022


> docker  run  -it  -e  TZ=Asia/Taipei  opensuse/leap:15.3  /bin/bash


940407fada80:/ # date

Sun Jun 19 00:31:39 Asia 2022


  • 這邊可以觀察到, 雖然傳遞 -e TZ=Asia/Taipei, 目前顯示的時間還不是 local time

  • 預設沒有裝 timezone 套件, 然後容器內也沒有 /etc/localtime 檔案


嘗試自己來建立 container image 測試

以下是 Dockerfile 內容


FROM opensuse/leap:15.3

RUN zypper  install -y timezone


建立 container image


> docker  build  -t  sakana/testtimezone2  .


再次測試

> docker  run  -it  sakana/testtimezone2  /bin/bash


23460ce0b35f:/ # date

Sun Jun 19 00:37:43 UTC 2022


傳入時區

> docker  run -it  -e  TZ=Asia/Taipei  sakana/testtimezone2  /bin/bash


7c48052f9d9e:/ # date

Sun Jun 19 08:38:42 CST 2022


  • 這邊就可以發現時間顯示已經變成我們傳入的 Asia/Taipei


另外 centos:7 以及 ubuntu:latest 的 container image 我也測試過 ( 如果有安裝 tzdata 套件就可以設定時區 )


先記下來


~ enjoy it


Reference


沒有留言: