最近發現有些鏡像裏,時區設置的是標準時區UTC,不是CST,需要修改docker的時區,設置成東八區。
修改docker的時區,有幾個方法,如修改鏡像、docker啓動修改參數、docker上配置時區目錄文件、docker直接修改時區等。
下面分別說明:
1.修改Dockerfile
RUN rm -f /etc/localtime \
&& ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
2.docker啓動時加參數
# 掛載本地 /etc/localtime 到容器內覆蓋配置
$ docker run -it -v /etc/localtime:/etc/localtime centos /bin/sh
3.docker內容修改時區
# 進入到容器內部配置
$ docker run -it centos /bin/sh
# 容器內執行下面的軟連接
sh-4.2# rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
4.k8s設置docker掛載時區路徑
spec:
affinity: {}
containers:
image: 'XXX:11001/test/logstash:7.3.0'
name: logstash
resources:
limits:
cpu: '2'
memory: 4G
requests:
cpu: 200m
memory: 2G
volumeMounts:
- mountPath: /etc/localtime
name: time_name
volumes:
- hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
type: ''
name: time_name
最後採用的是在K8S上配置了主機掛載路徑的方式,原因大家都明白啊,方便實用。