docker的容器会自动同步主机的时间?

给我已经正确地更改了docker容器的时区。 我是否需要在Docker容器中安装一个NTP服务器来定期同步时间,或者容器将同步它主机的时间?

如果您在OSX上运行boot2docker,请参阅此问题: https : //github.com/boot2docker/boot2docker/issues/290

时间同步成为一个问题,因为boot2docker主机在你的操作系统睡着时有时间漂移。 与您的docker集装箱时间同步无法通过运行您的容器与-v /etc/localtime:/etc/localtime:ro

相反,现在,你必须定期在OSX上运行这个:

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

更新为Kitematic的用户

如果您正在运行Kitematic ,现在是在OSX上启动并运行Docker的build议机制,则必须定期运行以下命令:

 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的用户

新的Docker Beta可以消除VirtualBox和Docker Machine。 docker工人的最新版本(目前是1.12.1-beta25(build:11807))似乎有能力检测何时出现时间不连续性,并进行相应的调整。 因此,这应该不再是一个问题…万岁!

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

看到sameersbn的答案。

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

最简单的解决scheme似乎是使用-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 

在Docker for Mac OS X Beta上,我经历了基于Alpine Linux的虚拟机的显着漂移。 从Alpine Linux FAQ中,您可以使用以下命令同步VM的时钟。

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

但是,访问虚拟机上的terminal是另一个问题,如果使用屏幕命令,则可以完成此操作。

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

该path是一个符号链接,在我的系统上指向/dev/ttys003

一旦你进入,请注意, moby login是根本没有密码。 完成后,CTRL-A,D将与屏幕会话断开连接。

注:这用于在Docker for Mac Trouble Shooting中logging,但似乎已被删除。 在Dockercon 2016期间,我非常幸运地看到了它。看起来Docker正试图将虚拟机完全抽象出来,这就解释了为什么它不再被logging下来。