O tempo de synchronization automática do contêiner do docker será com a máquina host?

Dando eu já mudei o fuso horário do container docker corretamente. Preciso instalar um servidor NTP dentro do contêiner docker para sincronizar periodicamente a hora ou o contêiner sincronizará a hora da máquina host?

Se você estiver no OSX executando boot2docker, consulte este problema: https://github.com/boot2docker/boot2docker/issues/290

A synchronization de horário se torna um problema porque o host boot2docker tem seu tempo drift enquanto seu sistema operacional está inativo. A synchronization de horário com o contêiner docker não pode ser resolvida ao executar seu contêiner com -v /etc/localtime:/etc/localtime:ro

Em vez disso, por enquanto, você precisa executar isso periodicamente no OSX:

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

Atualização para usuários do Kitematic

Se você estiver executando o Kitematic , que agora é o mecanismo sugerido para se levantar e executar no Docker no OSX, você terá que executar periodicamente este comando:

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

Ou, para versões mais antigas do docker

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

Atualização para usuários do novo Docker nativo para o OSX

O novo Docker Beta elimina o VirtualBox e o Docker Machine. As versões mais recentes do docker (atualmente, 1.12.1-beta25 (build: 11807)) parecem ter a capacidade de detectar quando houve uma descontinuidade de tempo e ajustar de acordo. Assim, isso não deve mais ser um problema … hooray !!

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

Veja a resposta da sameersbn.

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

A solução mais simples parece ser executar o contêiner com a opção -v /etc/localtime:/etc/localtime:ro . Portanto:

 #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 

No Docker para Mac OS X Beta, experimentei um desvio significativo na VM, que é baseada no Alpine Linux. No Alpine Linux FAQ, você pode sincronizar o relógio da VM com o seguinte comando.

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

No entanto, obter access a um terminal na VM é outra questão, que pode ser feita se você usar o comando screen.

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

Esse caminho é um link simbólico, que no meu sistema aponta para /dev/ttys003 .

Depois de entrar, observe que o moby login do moby login é simplesmente root sem senha. Depois que você terminar, CTRL-A, D será desconectado da session da canvas.

NOTA: Isso costumava ser documentado no Docker for Mac Trouble Shooting, mas isso parece ter sido derrubado. Tive a sorte de aparecer no Dockercon 2016. Parece que o Docker está tentando abstrair completamente a VM, o que explica por que ela não está mais documentada.

A solução atual para o tempo de oscilação do osx na janela de encaixe (abril de 2018):

Eu tenho meu mac em um servidor NTP, mas este relógio fixo deriva com contêineres:

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

Se o seu sistema não tiver access a um servidor NTP, depois de uma hibernação, o tempo visto pelo Docker para Mac poderá ficar consideravelmente fora de sincronia com o host. Além disso, o tempo pode sair lentamente de sincronia durante o uso. Para redefinir manualmente o tempo após a hibernação, execute:

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

Ou, para resolver os dois problemas, você pode adicionar o relógio local como uma fonte de tempo NTP de fallback de baixa prioridade (estrato alto) para o host. Para fazer isso, edite o arquivo /etc/ntp-restrict.conf do host para adicionar:

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

Em seguida, reinicie o serviço NTP com:

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

uso do docker-compose:

Adicione /etc/localtime:/etc/localtime:ro ao atributo de volumes .

Veja este link para demonstrar um exemplo.