Ubuntu timedatectl在Docker容器中失败

Mar*_*tör 9 ubuntu ntp docker ubuntu-16.04

我已经在Docker容器中运行Ubuntu 16.04 LTS(托管在macOS上).日期/时间约为四天.

$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
$ date
Sun May  7 05:57:21 UTC 2017
Run Code Online (Sandbox Code Playgroud)

生效日期是2017年5月11日06:17:13 UTC.

我想解决这个问题(检查这个这个),但我甚至无法运行timedatectl:

$ timedatectl status
Failed to create bus connection: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

srl*_*rlm 5

要回答所提出的实际问题(在Docker容器中Failed to create bus connection: No such file or directory运行时如何解决timedatectl status):

将以下标志添加到您的docker run命令:

--privileged
--volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro
Run Code Online (Sandbox Code Playgroud)

您需要--privileged,否则您将收到“无法查询服务器:对等方重置连接”。音量标记似乎可以与配合使用ro

  • 基础镜像中缺少 dbus,apt-get install dbus 解决了问题 (2认同)
  • 有没有办法在没有特权标志的情况下做到这一点?bitbucket 管道不允许 docker 容器在特权模式下运行 (2认同)

Mar*_*tör 4

时间漂移是由底层主机操作系统引起的,对于 Docker 来说,它不是 macOS,而是实际上运行在 macOS 上的 Linux VM。它与 macOS 睡眠时间有关(例如,当您合上 MacBook 盖子时)。显然它最近已被修复并且应该很快可用:https ://github.com/docker/for-mac/issues/17#issuecomment-300734810