Marcel Stör
Marcel Stör

Reputation: 23535

Ubuntu timedatectl fails in Docker container

I've got Ubuntu 16.04 LTS running in a Docker container (hosted on macOS). The date/time is off by about four days.

$ 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

Effective date is 11 May 2017 06:17:13 UTC.

I wanted to fix this (checking this and this) but I can't even run timedatectl:

$ timedatectl status
Failed to create bus connection: No such file or directory

How do I fix this?

Upvotes: 20

Views: 32034

Answers (2)

Marcel Stör
Marcel Stör

Reputation: 23535

Time drift is caused by the underlying host OS which, for Docker, isn't macOS but actually the Linux VM running on macOS. It's related to macOS sleep times (e.g. when you close the MacBook lid). Apparently it has recently been fixed and should be available soon: https://github.com/docker/for-mac/issues/17#issuecomment-300734810

Upvotes: 4

srlm
srlm

Reputation: 3216

To answer the actual question that was asked (how to fix Failed to create bus connection: No such file or directory when running timedatectl status in a Docker container):

Add the following flags to your docker run command:

--privileged
--volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro

You need the --privileged, otherwise you get a "Failed to query server: connection reset by peer". The volume flag seems to work fine with ro.

Upvotes: 9

Related Questions