我使用Alpine设置了JST时区,这是Docker的官方基础映像。
单击此处以供参考
https://wiki.alpinelinux.org/wiki/Setting_the_timezone
检查默认日期和时间
创建以下docker-compose.yml和
docker-compose.yml
1 2 3 4 | version: '3' services: timezone: image: alpine:3 |
在外壳中输入容器
SH
1 | $ docker-compose run timezone sh |
使用
日期命令
显示日期和时间
SH
1 2 | # date Mon Sep 23 08:49:05 UTC 2019 |
显示UTC时间
安装tzdata
SH
1 2 3 4 5 6 | # apk add tzdata fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz (1/1) Installing tzdata (2019b-r0) Executing busybox-1.30.1-r2.trigger OK: 9 MiB in 15 packages |
已创建一个包含时区设置的zoneinfo目录。
SH
1 2 3 4 5 6 7 | # ls /usr/share/zoneinfo Africa Australia Cuba Etc GMT+0 Iceland Kwajalein NZ Poland UCT Zulu America Brazil EET Europe GMT-0 Indian Libya NZ-CHAT Portugal US iso3166.tab Antarctica CET EST Factory GMT0 Iran MET Navajo ROC UTC posixrules Arctic CST6CDT EST5EDT GB Greenwich Israel MST PRC ROK Universal right Asia Canada Egypt GB-Eire HST Jamaica MST7MDT PST8PDT Singapore W-SU zone.tab Atlantic Chile Eire GMT Hongkong Japan Mexico Pacific Turkey WET zone1970.tab |
顺便说一句,在安装之前,我很生气,因为没有目录
SH
1 2 | # ls /usr/share/zoneinfo ls: /usr/share/zoneinfo: No such file or directory |
创建一个/ etc / localtime文件来设置JST时区
创建一个
/ etc / localtime文件,然后复制/ usr / share / zoneinfo / Asia / Tokyo的内容。
/ usr / share / zoneinfo /亚洲/东京
1 2 | TZif2^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^D^@^@^@^D^@^@^@^@^@^@^@ ^@^@^@^D^@^@^@^L.^@^@^@.>^Bp..Y....p..;..^G^@...^].........^C^A^B^A^B^A^B^A^B^@^@.^C^@^@^@^@..^A^D^@^@~.^@ JST-9 |
我不确定第一行...
字符是否乱码?
JST-9
它是否表示UTC与JST之间的9个小时差异?
SH
1 | # cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime |
/ etc / localtime
1 2 | TZif2^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^D^@^@^@^D^@^@^@^@^@^@^@ ^@^@^@^D^@^@^@^L.^@^@^@.>^Bp..Y....p..;..^G^@...^].........^C^A^B^A^B^A^B^A^B^@^@.^C^@^@^@^@..^A^D^@^@~.^@ JST-9 |
设定时区
SH
1 | # echo "Asia/Tokyo" > /etc/timezone |
/ etc /时区
1 | Asia/Tokyo |
设置正确
按日期检查时间
SH
1 2 | # date Mon Sep 23 17:55:57 JST 2019 |
在JST时间显示的
清理后卸载tzdata
SH
1 2 3 4 | # apk del tzdata (1/1) Purging tzdata (2019b-r0) Executing busybox-1.30.1-r2.trigger OK: 6 MiB in 14 packages |
SH
1 2 | # ls /usr/share/zoneinfo ls: /usr/share/zoneinfo: No such file or directory |
我能够正确卸载它。
奖金
如果要使用环境变量TZ在dockerfile或docker-compose.yml中设置时区,
可以设置而无需卸载tzdata
(即使将其设置为卸载,也不会反映出来)
在dockerfile
中设置环境变量TZ
docker文件
1 2 3 4 | FROM alpine:3 RUN apk add tzdata ENV TZ=Asia/Tokyo |
docker-compose.yml
1 2 3 4 | version: '3' services: timezone: build: ./ |
SH
1 | $ docker-compose build |
SH
1 | $ docker-compose run timezone sh |
SH
1 2 | # date Mon Sep 23 18:51:33 JST 2019 |
在docker-compose.yml
中设置环境变量TZ
docker文件
1 2 3 | FROM alpine:3 RUN apk add tzdata |
docker-compose.yml
1 2 3 4 5 6 | version: '3' services: timezone: build: ./ environment: TZ: Asia/Tokyo |
SH
1 | $ docker-compose build |
SH
1 | $ docker-compose run timezone sh |
SH
1 2 | # date Mon Sep 23 19:00:33 JST 2019 |
结束
深时区