Ubuntu timedatectl не работает в контейнере Docker

У меня есть Ubuntu 16.04 LTS, работающая в контейнере Docker (размещенном на 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

Дата вступления в силу: 11 мая 2017 г., 06:17:13 UTC.

Я хотел это исправить (проверив это и это), но я даже не могу запустить timedatectl:

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

Как это исправить?


person Marcel Stör    schedule 11.05.2017    source источник
comment
Пожалуйста, посмотрите, поможет ли этот пост - serverfault.com/questions/683605/ или stackoverflow.com/questions/40234847/   -  person Rao    schedule 11.05.2017
comment
Нет, проблема не в том, что часовой пояс неправильный, меня устраивает UTC. ls -l /etc/localtime показывает, что правильно указывает на /usr/share/zoneinfo/Etc/UTC. Таким образом, запуск dpkg-reconfigure -f noninteractive tzdata не имеет никакого эффекта, дата все еще смещена на ~ 4 дня.   -  person Marcel Stör    schedule 11.05.2017
comment
Подобрали одно и то же изображение Ubuntu на разных ОС (Windows / Linux), показывая UTC, и это правильно. Надеюсь, что на хост-машине нет проблем со временем. Есть идеи воспроизвести его?   -  person Rao    schedule 11.05.2017
comment
date в операционной системе хоста возвращает правильные значения. Для воспроизведения вы можете запустить docker run --rm -ti marcelstoer/nodemcu-build date.   -  person Marcel Stör    schedule 11.05.2017
comment
Спасибо, показывает правильно Thu May 11 08:06:23 UTC 2017   -  person Rao    schedule 11.05.2017


Ответы (2)


Чтобы ответить на фактически заданный вопрос (как исправить Failed to create bus connection: No such file or directory при запуске timedatectl status в контейнере Docker):

Добавьте следующие флаги в команду docker run:

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

Вам нужен --privileged, иначе вы получите «Не удалось запросить сервер: соединение сброшено узлом». Флаг громкости, кажется, отлично работает с ro.

person srlm    schedule 19.10.2017
comment
Если я монтирую /run/dbus, я получаю следующую ошибку. Ошибка при запуске контейнера. пути из Docker -> Настройки... -> Общий доступ к файлам.\r\nСм. docs.docker.com/docker-for-mac/osxfs/#namespaces для получения дополнительной информации. - person Damian O' Neill; 26.02.2018
comment
dbus отсутствует в базовом образе, apt-get install dbus решил проблему - person Damian O' Neill; 26.02.2018
comment
Есть ли способ сделать это без привилегированного флага? конвейеры битбакета не позволяют запускать контейнеры докеров в привилегированном режиме - person con--; 10.08.2018

Дрейф во времени вызван базовой ОС хоста, которая для Docker не является macOS, а на самом деле виртуальная машина Linux, работающая на macOS. Это связано со временем сна macOS (например, когда вы закрываете крышку MacBook). По-видимому, это было недавно исправлено и скоро должно быть доступно: https://github.com/docker/for-mac/issues/17#issuecomment-300734810

person Marcel Stör    schedule 12.06.2017