Risposte:
Se sei su OSX con boot2docker in esecuzione, consulta questo problema: https://github.com/boot2docker/boot2docker/issues/290
La sincronizzazione dell'ora diventa un problema perché l'host boot2docker ha la sua deriva temporale mentre il tuo sistema operativo è addormentato. La sincronizzazione dell'ora con il container Docker non può essere risolta eseguendo il container con-v /etc/localtime:/etc/localtime:ro
Invece, per ora, devi eseguirlo periodicamente su OSX:
/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org
Aggiornamento per gli utenti di Kitematic
Se stai eseguendo Kitematic , che ora è il meccanismo suggerito per iniziare a lavorare su Docker in OSX, dovrai eseguire periodicamente questo comando:
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'
Oppure, per le versioni precedenti di docker
docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'
Aggiornamento per gli utenti del nuovo Docker nativo per OSX
La nuova Docker Beta elimina VirtualBox e Docker Machine. Le ultime build di docker (attualmente 1.12.1-beta25 (build: 11807)) sembrano avere la capacità di rilevare quando c'è stata una discontinuità temporale e di adattarsi di conseguenza. Quindi, questo non dovrebbe più essere un problema ... evviva !!
https://github.com/sameersbn/docker-gitlab/issues/77
Vedi la risposta di sameersbn.
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
La soluzione più semplice sembra essere quella di eseguire il contenitore con l' -v /etc/localtime:/etc/localtime:ro
opzione. Così:
#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
--privileged
modalità).
date
sulla macchina host nel mio MWE, poiché altrimenti forse non è chiaro che il contenitore riceve l'ora dall'host.
setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
Su Docker per Mac OS X Beta, ho riscontrato una significativa deriva sulla VM, che è basata su Alpine Linux. Dalle FAQ di Alpine Linux è possibile sincronizzare l'orologio della VM con il seguente comando.
ntpd -d -q -n -p pool.ntp.org
Tuttavia, ottenere l'accesso a un terminale sulla VM è un'altra domanda, che può essere eseguita se si utilizza il comando sullo schermo.
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Quel percorso è un collegamento simbolico, che sul mio sistema punta a /dev/ttys003
.
Una volta entrato, nota che moby login
è semplicementeroot
senza password. Dopo aver finito, CTRL-A, D si disconnetterà dalla sessione dello schermo.
NOTA: questo era documentato su Docker per Mac Risoluzione dei problemi, ma sembra che sia stato rimosso. Ho avuto la fortuna di averlo mostrato mentre ero a Dockercon 2016. Sembra che Docker stia cercando di astrarre completamente la VM dall'esperienza, il che spiega perché non è più documentata.
La soluzione attuale per osx time drift on docker (aprile 2018):
Ho il mio Mac su un server NTP, ma questo orologio fisso varia con i contenitori:
Da https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :
Se il tuo sistema non ha accesso a un server NTP, dopo un ibernazione il tempo visto da Docker per Mac potrebbe essere notevolmente fuori sincrono con l'host. Inoltre, il tempo potrebbe scivolare lentamente fuori sincronia durante l'uso. Per ripristinare manualmente l'ora dopo l'ibernazione, eseguire:
docker run --rm --privileged alpine hwclock -s
In alternativa, per risolvere entrambi i problemi, è possibile aggiungere l'orologio locale come origine dell'ora NTP di riserva a bassa priorità (strato alto) per l'host. Per fare ciò, modifica il file /etc/ntp-restrict.conf dell'host per aggiungere:
server 127.127.1.1 # LCL, local clock
fudge 127.127.1.1 stratum 12 # increase stratum
Quindi riavvia il servizio NTP con:
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
Aggiungi /etc/localtime:/etc/localtime:ro
avolumes
attributo.
Guarda questo link per dimostrare un esempio.