Answers:
如果您在运行boot2docker的OSX上,请参见以下问题:https : //github.com/boot2docker/boot2docker/issues/290
时间同步成为一个问题,因为boot2docker主机在OS睡眠时会发生时间漂移。与docker容器的时间同步无法通过使用以下命令运行容器来解决-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用户的更新
新的Docker Beta不再使用VirtualBox和Docker Machine。最新版本的docker(当前为1.12.1-beta25(内部版本:11807))似乎具有检测时间不连续性并进行相应调整的能力。因此,这不再是问题...万岁!
https://github.com/sameersbn/docker-gitlab/issues/77
参见sameersbn的答案。
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
最简单的解决方案似乎是使用该-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
--privileged
模式下运行)。
date
在MWE中包含对主机的调用,因为否则可能不清楚容器是否从主机获取时间。
setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
在Mac OS X Beta版Docker上,我在基于Alpine Linux的VM上经历了重大漂移。从Alpine Linux FAQ中,您可以使用以下命令同步VM的时钟。
ntpd -d -q -n -p pool.ntp.org
但是,要访问VM上的终端是另一个问题,如果使用screen命令,可以完成此操作。
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
该路径是一个符号链接,在我的系统上指向/dev/ttys003
。
进入后,请注意moby login
只是root
没有密码。完成后,CTRL-A,D将与屏幕会话断开连接。
注意:这曾经在Docker for Mac疑难解答中有记录,但似乎已被删除。我很幸运在Dockercon 2016上展示了它。看来Docker试图将VM完全从经验中抽象出来,这解释了为什么不再对其进行记录。
Docker上OSX时间漂移的当前解决方案(2018年4月):
我的确在NTP服务器上安装了mac,但是此固定时钟随容器漂移:
从https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues:
如果您的系统无法访问NTP服务器,则在休眠后,Docker for Mac看到的时间可能与主机不同步。此外,在使用过程中,时间可能会缓慢地偏离同步。要在休眠后手动重置时间,请运行:
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