it-swarm-eu.dev

Bude docker kontejner automaticky synchronizovat čas s hostitelským počítačem?

Správně jsem změnil časové pásmo ukotvitelného kontejneru. Musím v rámci ukotvitelného kontejneru nainstalovat NTP server, aby se pravidelně synchronizoval čas nebo kontejner synchronizoval čas ze svého počítače Host?

93
vantt

Pokud používáte OSX s boot2docker, podívejte se na tento problém: https://github.com/boot2docker/boot2docker/issues/290

Synchronizace času se stává problémem, protože boot2docker Host má svůj časový posun, zatímco váš OS spí. Synchronizaci času s ukotvitelným kontejnerem nelze vyřešit spuštěním kontejneru s -v /etc/localtime:/etc/localtime:ro

Namísto toho je nutné tuto operaci pravidelně spouštět v OSX: 

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

Aktualizace pro uživatele Kitematic

Pokud používáte Kitematic , což je nyní navrhovaný mechanismus pro spouštění a spouštění na Docker v OSX, budete muset tento příkaz pravidelně spouštět:

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

Nebo u starších verzí ukotvitelného panelu

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

Aktualizace pro uživatele nového nativního Docker pro OSX

Nová Docker Beta se zbaví VirtualBox a Docker stroje. Zdá se, že nejnovější sestavení ukotvitelného panelu (v současné době 1.12.1-beta25 (sestavení: 11807)) má schopnost zjistit, kdy došlo k časové nespojitosti a odpovídajícím způsobem upravit. To by tedy už nemělo být problém ... hurá !!

100
esilver

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

Podívejte se na to, co je stejné.

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

Zdá se, že nejjednodušším řešením je spuštění kontejneru s volbou -v /etc/localtime:/etc/localtime:ro. Tím pádem:

#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
42
shabbychef

Na Dockeru pro Mac OS X Beta jsem zaznamenal významný posun na VM, který je založen na Alpine Linuxu. Z Alpine Linux FAQ můžete synchronizovat hodiny VM s následujícím příkazem.

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

Získání přístupu k terminálu na VM je však další otázkou, kterou lze provést, pokud použijete příkaz na obrazovce. 

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

Tato cesta je symbolický odkaz, který na mém systému ukazuje na /dev/ttys003.

Jakmile se dostanete dovnitř, všimněte si, že moby login je jednoduše root bez hesla. Po dokončení se CTRL-A, D odpojí od relace obrazovky.

POZNÁMKA: Toto bylo zdokumentováno na Docker pro Mac Trouble Shooting , ale zdá se, že bylo odstraněno. Měla jsem to štěstí, že jsem to ukázala na Dockercon 2016. Zdá se, že Docker se pokouší abstrakt VM zcela vyloučit ze zkušenosti, což vysvětluje, proč to už není zdokumentováno.

23

Aktuální řešení pro osxový časový posun na ukotvitelném panelu (duben 2018):

Mám svůj mac na serveru NTP, ale tento pevný drift s kontejnery:

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

Pokud váš systém nemá přístup k serveru NTP, může být po prezimování čas, který vidí Docker pro Mac, výrazně mimo synchronizaci s hostitelem. Kromě toho se může čas během používání pomalu vymanit ze synchronizace. Chcete-li čas po hibernaci obnovit ručně, spusťte:

docker run --rm --privileged Alpine hwclock -s

Nebo k vyřešení obou problémů můžete přidat místní hodiny jako záložní NTP zdroj času nízké priority (vysoké stratum) pro hostitele. Chcete-li to provést, upravte /etc/ntp-restrict.conf hostitele a přidejte je:

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

Poté restartujte službu NTP pomocí:

Sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
Sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
1
Steve Kallestad

použití docker-compose:

Přidejte /etc/localtime:/etc/localtime:ro do atributu volumes.

Prohlédněte si tento link pro ukázku příkladu.

0
Benyamin Jafari