web-dev-qa-db-fra.com

Ubuntu timedatectl échoue dans le conteneur Docker

Ubuntu 16.04 LTS tourne dans un conteneur Docker (hébergé sur macOS). La date/heure est décalée d'environ quatre jours.

$ 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

La date effective est le 11 mai 2017 06:17:13 UTC.

Je voulais résoudre ce problème (vérifier this et this ) mais je ne peux même pas exécuter timedatectl:

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

Comment puis-je réparer ça?

7
Marcel Stör

La dérive temporelle est provoquée par le système d'exploitation hôte sous-jacent qui, pour Docker, n'est pas macOS mais en réalité Linux VM s'exécutant sur macOS. Cela est lié aux heures de veille macOS (par exemple, lorsque vous fermez le couvercle du MacBook). Apparemment, il a récemment été corrigé et devrait être disponible sous peu: https://github.com/docker/for-mac/issues/17#issuecomment-300734810

1
Marcel Stör

Pour répondre à la question qui a été posée (comment résoudre Failed to create bus connection: No such file or directory lors de l'exécution de timedatectl status dans un conteneur Docker):

Ajoutez les indicateurs suivants à votre commande docker run:

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

Vous avez besoin du --privileged, sinon vous obtenez un "Échec d'interrogation du serveur: connexion réinitialisée par un homologue". L'indicateur de volume semble fonctionner correctement avec ro.

3
srlm