在 Docker 中设置时区
生活随笔
收集整理的這篇文章主要介紹了
在 Docker 中设置时区
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Docker Hub 中的官方鏡像,一般都默認設置為 UTC 時間。而我們位于東八區,在啟動容器或構建自己的鏡像時,往往需要對時區進行設置。根據基礎鏡像的不同,設置時區的方法也有所區別。
基于 Debian 鏡像
由于 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:stretchENV TZ=Asia/Shanghai基于 Alpine 鏡像
與 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.9ENV TZ=Asia/ShanghaiRUN apk update \&& apk add tzdata \&& echo "${TZ}" > /etc/timezone \&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \&& rm /var/cache/apk/*基于 Ubuntu 鏡像
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 "${TZ}" > /etc/timezone root@2a33fc02c099:/# ln -sf /usr/share/zoneinfo/${TZ} /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:bionicENV TZ=Asia/ShanghaiRUN echo "${TZ}" > /etc/timezone \&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \&& apt update \&& apt install -y tzdata \&& rm -rf /var/lib/apt/lists/*總結
以上是生活随笔為你收集整理的在 Docker 中设置时区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go 实现从服务器导出excel 到浏览
- 下一篇: 精密单点定位技术(PPP)和RTK技术有