docker hub 中的官方映象,一般都預設設定為 utc 時間。而我們位於東八區,在啟動容器或構建自己的映象時,往往需要對時區進行設定。根據基礎映象的不同,設定時區的方法也有所區別。
由於 debian 映象中已經包含了 tzdata,因此設定時區的方法比較簡單,只需新增環境變數 tz 即可。我們可以通過啟動乙個 debian 容器,執行其中的 date 命令來驗證。
root@677e5c1c1e19:/# date
sat jan 12 10:25:27 utc 2019
root@677e5c1c1e19:/# export tz=asia/shanghai
root@677e5c1c1e19:/# date
sat jan 12 18:25:44 cst 2019
當需要在容器中使用本地時間的時候,只需在啟動容器時,新增引數-e tz=asia/shanghai即可。
如果是構建 docker 映象,可以這樣寫:
from debian:stretch
env tz=asia/shanghai
與 debian 映象不同,alpine 映象中並沒有包含 tzdata,所以只設定 tz 環境變數並不能達到我們想要的效果,因此需要安裝 tzdata。
/ # date
sat jan 12 10:37:07 utc 2019
/ # export tz=asia/shanghai
/ # date
sat jan 12 10:37:34 utc 2019
/ # apk add tzdata
....
....
....
/ # date
sat jan 12 18:38:18 cst 2019
由於無法直接通過環境變數設定時區,因此需要在容器中使用本地時間時,只能先基於原有的映象構建自己的映象,在啟動容器時使用自己構建的映象即可。
from alpine:3.9
env tz=asia/shanghai
run apk update \
&& apk add tzdata \
&& echo "$" > /etc/timezone \
&& ln -sf /usr/share/zoneinfo/$ /etc/localtime \
&& rm /var/cache/apk/*
ubuntu 映象中也沒有包含 tzdata,設定時區的方法與 alpine 映象相似。
root@2a33fc02c099:/# date
wed mar 6 13:12:44 utc 2019
root@2a33fc02c099:/# export tz=asia/shanghai
root@2a33fc02c099:/# date
wed mar 6 13:13:08 asia 2019
root@2a33fc02c099:/# echo "$" > /etc/timezone
root@2a33fc02c099:/# ln -sf /usr/share/zoneinfo/$ /etc/localtime
root@2a33fc02c099:/# apt update
....
....
....
root@2a33fc02c099:/# apt install -y tzdata
....
....
....
root@2a33fc02c099:/# date
wed mar 6 21:15:52 cst 2019
寫成 dockerfile 如下:
from ubuntu:bionic
env tz=asia/shanghai
run echo "$" > /etc/timezone \
&& ln -sf /usr/share/zoneinfo/$ /etc/localtime \
&& apt update \
&& apt install -y tzdata \
&& rm -rf /var/lib/apt/lists/*
docker時區設定
前幾天用docker部署mysql,在web服務將資料寫入mysql時,發現時間相差了8個小時,隨後在網上查詢解決辦法。若用docker run 命令來執行docker的話,可以直接通過 v,將宿主機的時間與本地時間繫結到容器中,這樣時間就會跟宿主機一樣,例子 docker run v etc ti...
Docker容器的時區設定
docker作為一款優秀的開源容器管理工具,能夠幫助開發者一鍵式地在各個平台上執行自己的應用而無需考慮環境相容問題,已經成為目前主流的應用部署方案。在使用docker容器時,可能碰到的乙個問題是時區的設定,因為docker容器內預設的時區是utc,這一點可以通過date命令來驗證。分別在宿主機和do...
docker 時區 Docker修改時區
在使用docker時,其預設時區並非使用者所在時區,需要進行修改。對於單個容器,當前修改有幾種常見方式,比如直接對映宿主機時區到容器內,而本文介紹的為使用dockerfile來直接修改映象時區。此處僅以常見幾個基礎容器為例來介紹。from alpine latest 安裝tzdata run apk...