私はDockerコンテナー(macOSでホストされている)でUbuntu 16.04 LTSを実行しています。日時は約4日ずれています。
$ 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
発効日は2017年5月11日06:17:13 UTCです。
これを修正したかった( this と this をチェックする)が、timedatectl
さえ実行できない:
$ timedatectl status
Failed to create bus connection: No such file or directory
どうすれば修正できますか?
時間ドリフトは、Dockerの場合はmacOSではなく、実際にはLinux VM macOSで実行されています。基盤となるホストOSによって引き起こされます。これは、macOSのスリープ時間に関連しています(たとえば、MacBookのふたを閉じるとき) )どうやら最近修正されており、間もなく利用可能になるはずです: https://github.com/docker/for-mac/issues/17#issuecomment-30073481
尋ねられた実際の質問に答えるには(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
--privileged
が必要です。それ以外の場合は、「サーバーのクエリに失敗しました:接続がピアによってリセットされました」と表示されます。ボリュームフラグはro
で正常に機能するようです。