timedatectl:无法创建总线连接:没有这样的文件或目录

Gab*_*ini 9 package-management timezone systemd docker 18.04

场景:我正在尝试在基于 Ubuntu 18.04 docker 映像的 docker 容器上设置时区。只需拉取映像、更新并安装 systemd

> apt-get -y update
> apt-get -y install systemd
Run Code Online (Sandbox Code Playgroud)

错误: 无法创建总线连接:没有这样的文件或目录

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

问题:我缺少什么?

注意: etc目录下没有localtime和timezone文件

> ls /etc/localtime 
> ls: cannot access '/etc/localtime': No such file or directory
> ls /etc/timezone 
> ls: cannot access '/etc/timezone': No such file or directory
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个这个但没有解决,因为在我的情况下没有缺少 dbus

> apt-get install dbus
> dbus is already the newest version (1.12.2-1ubuntu1.1).
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 2

这是由于容器无法访问主机上的 system_bus_socket 造成的。您需要使用以下命令运行容器:

docker run -ti -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro imagename /bin/bash
Run Code Online (Sandbox Code Playgroud)

然后您就可以使用 timedatectl 命令。


小智 2

这对我有用

docker run --privileged -ti -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro imagename /bin/bash
Run Code Online (Sandbox Code Playgroud)

劳伦建议的解决方案相同,但--privileged添加了标志