场景:我正在尝试在基于 Ubuntu 18.04 docker 镜像的 docker 容器上设置时区。只需拉取镜像、更新并安装 systemd
> apt-get -y update
> apt-get -y install systemd
错误: 无法创建总线连接:没有该文件或目录
> timedatectl
> timedatectl: Failed to create bus connection: No such file or directory
问题:我遗漏了什么?
笔记:目录等中没有文件 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
我见过这和这但没有解决,因为在我的例子中 dbus 没有丢失
> apt-get install dbus
> dbus is already the newest version (1.12.2-1ubuntu1.1).
谢谢
答案1
这是因为容器无法访问主机上的 system_bus_socket。您需要使用以下命令运行容器:
docker run -ti -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro imagename /bin/bash
然后您将能够使用 timedatectl 命令。
答案2
这对我有用
docker run --privileged -ti -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro imagename /bin/bash
Lauren 建议的解决方案与此相同,但添加了--privileged
标记