主机重新启动后,我无法连接到 docker 容器内正确的抽象 unix 套接字。
在创建容器时,我将容器的
DBUS_SESSION_BUS_ADDRESS
设置为主机 DBUS_SESSION_BUS_ADDRESS
的当前值。一切都按预期进行。主机重新启动后,其DBUS_SESSION_BUS_ADDRESS
发生了变化,但容器仍然尝试连接到旧的套接字。更具体地说:
DBUS_SESSION_BUS_ADDRESS
是/tmp/dbus-ABC
DBUS_SESSION_BUS_ADDRESS
设置为/tmp/dbus-ABC
(与主机相同)DBUS_SESSION_BUS_ADDRESS
是/tmp/dbus-XYZ
"Failed to connect to socket /tmp/dbus-ABC: Connection refused"
,因为主机的新 DBUS_SESSION_BUS_ADDRESS
是 /tmp/dbus-XYZ
我知道可以通过每次重新启动主机后更新容器的 DBUS_SESSION_BUS_ADDRESS 的值来解决此问题。但有没有一种方法可以自动化执行此操作?
你不能在运行命令中将环境变量传递给容器吗? 即:
docker run .... -e DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS