होस्ट मशीन के साथ डॉकटर कंटेनर ऑटो सिंक टाइम होगा?


108

मैंने पहले ही डॉकटर कंटेनर के समय क्षेत्र को सही ढंग से बदल दिया। क्या मुझे समय-समय पर सिंक करने के लिए docker कंटेनर के अंदर NTP सर्वर स्थापित करने की आवश्यकता है या कंटेनर अपने होस्ट मशीन से समय सिंक करेगा?

जवाबों:


103

यदि आप OSX रनिंग बूट 2 डॉक पर हैं, तो इस मुद्दे को देखें: https://github.com/boot2docker/boot2docker/issues/290

टाइम सिंक एक मुद्दा बन जाता है क्योंकि बूट 2docker होस्ट का समय बहाव है, जबकि आपका ओएस सो रहा है। अपने डॉकटर कंटेनर के साथ टाइम सिंक को आपके कंटेनर को चलाकर हल नहीं किया जा सकता है-v /etc/localtime:/etc/localtime:ro

इसके बजाय, अब के लिए, आपको समय-समय पर इसे OSX पर चलाना होगा:

/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org

Kitematic के उपयोगकर्ताओं के लिए अद्यतन

यदि आप Kitematic चला रहे हैं , जो अब OSX में Docker पर उठने और चलने के लिए सुझाया गया तंत्र है, तो आपको समय-समय पर इस कमांड को चलाना होगा:

docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'

या, docker के पुराने संस्करणों के लिए

docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'

OSX के लिए नए देशी डॉकर के उपयोगकर्ताओं के लिए अद्यतन

नया डॉकटर बीटा वर्चुअलबॉक्स और डॉकर मशीन के साथ दूर करता है। Docker के नवीनतम बिल्ड (वर्तमान में, १.१२.१-बीटा २५ (बिल्ड: ११ontin०))) का पता लगाने की क्षमता है जब एक समय की छूट और तदनुसार समायोजित किया गया है। इस प्रकार, यह अब एक मुद्दा नहीं होना चाहिए ... हुर्रे !!


आप दयालु हैं शुक्रिया!
seanmcl

बहुत बहुत धन्यवाद। बस यही एक काम था।
मार्क बाओ


7
ध्यान दें कि डोज़र के लिए OSX बीटा के लिए, कंटेनर को पुनरारंभ करने से मुझे काम नहीं मिला, और न ही इसे फिर से बनाना। इसके बजाय, मुझे खुद डॉकर (मेनूबार आइकन से) को फिर से शुरू करना पड़ा।
पोल

मैंने प्रत्येक 5 मिनट में docker- मशीन VMs पर समय को सिंक्रनाइज़ करने के लिए इस उत्तर पर आधारित एक CLI टूल लिखा । मेरे OSX एल कैपिटन और विंडोज 7 प्रो पर काम करता है
पिताजी

50

https://github.com/sameersbn/docker-gitlab/issues/77

देखिए एसर्सबीएन का जवाब।

option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"

2
विकल्प 2 ने मेरे लिए काम किया। मुझे वास्तव में पसंद है कि अन्य विकल्पों की तुलना में अधिक स्पष्ट है।
रयान वॉल्स

शुक्रिया विकल्प 2 ने भी मेरे लिए काम किया। मुझे मेरे मैक पर विकल्प 1 के साथ एक त्रुटि मिलती है क्योंकि मेरे पास कोई आदि / स्थानीय समय फ़ोल्डर नहीं है।
ज़र्गलबी

46

सबसे आसान समाधान आपके कंटेनर को -v /etc/localtime:/etc/localtime:roविकल्प के साथ चलाना प्रतीत होता है । इस प्रकार:

#run without tz info:
docker run --rm -t -i ubuntu date
Wed Apr  2 18:40:07 UTC 2014
# run with tz info:
docker run --rm -t -i -v /etc/localtime:/etc/localtime:ro ubuntu date
Wed Apr  2 11:40:29 PDT 2014

25
मुझे नहीं पता कि मूल प्रश्न टाइमज़ोन के बारे में अधिक था (जैसे कि यह सुनिश्चित करना कि कंटेनर डीएसटी और टाइमज़ोन परिवर्तनों का सम्मान करेगा) या सटीक समय रखते हुए (उदाहरण के लिए सुनिश्चित करें कि कंटेनर घड़ी बहाव नहीं होगी)। यदि यह टाइमज़ोन के बारे में है, तो यह उत्तर एकदम सही है। यदि यह घड़ी के बहाव के बारे में है, तो आपको चिंता करने की आवश्यकता नहीं है: कंटेनर की घड़ी होस्ट की घड़ी के समान है (सिवाय इसके कि जब यह --privilegedमोड में चल रहा हो, तब कंटेनर इसे बदल नहीं सकता है)।
जिप्टज्जो

@jpetazzo सहमत; मुझे dateअपने MWE में होस्ट मशीन पर कॉल शामिल करना चाहिए , क्योंकि यह अन्यथा स्पष्ट नहीं है कि कंटेनर को मेजबान से अपना समय मिलता है।
शबीबिहेफ

1
setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
ब्रायन टिंगल

यह OSX पर प्रति do 1.3 काम नहीं करता है। ब्रायन टिंगल के रूप में एक ही त्रुटि।
18

1
@esilver boot2docker केवल उपनिर्देशिका / उपयोगकर्ताओं को डिफ़ॉल्ट रूप से माउंट कर सकता है
menghan

27

मैक ओएस एक्स बीटा के लिए डॉकर पर, मैंने वीएम पर महत्वपूर्ण बहाव का अनुभव किया, जो अल्पाइन लिनक्स पर आधारित है। से अल्पाइन लिनक्स पूछे जाने वाले प्रश्न आप निम्न आदेश के साथ वी एम की घड़ी सिंक्रनाइज़ कर सकते हैं।

ntpd -d -q -n -p pool.ntp.org

हालांकि, वीएम पर एक टर्मिनल तक पहुंच प्राप्त करना एक और सवाल है, जो स्क्रीन कमांड का उपयोग करने पर किया जा सकता है।

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

वह मार्ग एक सिम्लिंक है, जो मेरे सिस्टम पर इंगित करता है /dev/ttys003

एक बार जब आप अंदर पहुंच जाते हैं, तो ध्यान दें कि moby loginबस rootबिना पासवर्ड के है। आपके समाप्त होने के बाद, CTRL-A, D स्क्रीन सत्र से डिस्कनेक्ट हो जाएगा।

नोट: यह मैक ट्रबल शूटिंग के लिए डॉकर पर प्रलेखित किया गया था, लेकिन लगता है कि इसे नीचे ले जाया गया है। मैं भाग्यशाली था कि इसे डॉकरेकॉन 2016 में दिखाया गया था। ऐसा लगता है कि डॉकटर वीएम को अनुभव से पूरी तरह से अलग करने की कोशिश कर रहा है, जो बताता है कि अब इसका दस्तावेजीकरण क्यों नहीं हुआ।


3
रुक-रुक कर करने वाले मशीन के बिना नए आरसी का उपयोग करने वाले लोगों के लिए यह नया स्वीकार किया गया जवाब होना चाहिए
Blizz

2

Dox (अप्रैल 2018) पर ऑक्स टाइम ड्रिफ्ट का वर्तमान समाधान:

मेरे पास एक NTP सर्वर पर मेरा मैक है, लेकिन कंटेनरों के साथ यह निश्चित घड़ी का बहाव:

से https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :

यदि आपके सिस्टम में एक NTP सर्वर तक पहुंच नहीं है, तो हाइबरनेट के बाद Docker द्वारा मैक के लिए देखा गया समय होस्ट के साथ सिंक से काफी बाहर हो सकता है। इसके अलावा, समय धीरे-धीरे उपयोग के दौरान सिंक से बाहर हो सकता है। हाइबरनेशन के बाद मैन्युअल रूप से रीसेट करने के लिए, रन करें:

docker run --rm --privileged alpine hwclock -s

या, दोनों समस्याओं को हल करने के लिए, आप होस्ट के लिए स्थानीय घड़ी को निम्न-प्राथमिकता (उच्च स्ट्रेटम) फ़ॉलबैक NTP समय स्रोत के रूप में जोड़ सकते हैं। ऐसा करने के लिए, होस्ट /etc/ntp-restrict.conf को जोड़ने के लिए संपादित करें:

server 127.127.1.1              # LCL, local clock
fudge  127.127.1.1 stratum 12   # increase stratum

इसके बाद NTP सेवा को फिर से शुरू करें:

sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.