无法连接到套接字/tmp/dbus-xxx:重新启动主机后,docker 容器中的连接被拒绝

问题描述 投票:0回答:1

主机重新启动后,我无法连接到 docker 容器内正确的抽象 unix 套接字。

在创建容器时,我将容器的

DBUS_SESSION_BUS_ADDRESS
设置为主机
DBUS_SESSION_BUS_ADDRESS
的当前值。一切都按预期进行。主机重新启动后,其
DBUS_SESSION_BUS_ADDRESS
发生了变化,但容器仍然尝试连接到旧的套接字。更具体地说:

  1. 主持人当前的
    DBUS_SESSION_BUS_ADDRESS
    /tmp/dbus-ABC
  2. 启动容器X并将其
    DBUS_SESSION_BUS_ADDRESS
    设置为
    /tmp/dbus-ABC
    (与主机相同)
  3. 重启主机
  4. 主持人的新
    DBUS_SESSION_BUS_ADDRESS
    /tmp/dbus-XYZ
  5. 重启容器X
  6. 在容器内获取
    "Failed to connect to socket /tmp/dbus-ABC: Connection refused"
    ,因为主机的新
    DBUS_SESSION_BUS_ADDRESS
    /tmp/dbus-XYZ

我知道可以通过每次重新启动主机后更新容器的 DBUS_SESSION_BUS_ADDRESS 的值来解决此问题。但有没有一种方法可以自动化执行此操作?

docker sockets docker-compose dockerfile dbus
1个回答
0
投票

你不能在运行命令中将环境变量传递给容器吗? 即:

docker run .... -e DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS

© www.soinside.com 2019 - 2024. All rights reserved.