關於docker線上部署時間問題
阿新 • • 發佈:2020-10-07
背景
公司線上部署採用docker swarm方式,這幾天線上專案時間突然出了問題(ps:第一反應,我去,這也能出問題,程式碼裡肯定藏毒了),線上時間總跟實際時間差八個小時。本著速戰速決的原則,把所有時間減了八個小時,夜晚一上線,臥槽,沒生效,大佬給我“指點”一通後我幡然醒悟。得,總結一下問題
問題分析
宿主機採用的是cst時間
[root@test-env1 data]# date
2018年 11月 27日 星期二 11:12:41 CST
docker容器裡採用的是utc時間
root@40f3dddeaf46:/# date
Tue Nov 27 03:13:21 UTC 2018
中間剛好相差八個小時
問題解決
兩種方案:
改容器時間與宿主機保持一致
在程式碼中更改時間
改容器時間與宿主機保持一致
統一時區的幾種方法
(1)共享主機的localtime
# docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro docker.io/nginx /bin/bash
(2)複製主機的localtime
docker cp /etc/localtime 87986863838b:/etc/
(3)在dockerfile檔案中加入如下內容
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
第二種就是繼續沿用容器utc時間,在原有的時間上加八個小時,本著不麻煩其他大佬的原則還是接著用第二種