1. 程式人生 > 實用技巧 >關於docker線上部署時間問題

關於docker線上部署時間問題

背景
公司線上部署採用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時間,在原有的時間上加八個小時,本著不麻煩其他大佬的原則還是接著用第二種