运行 Docker 容器内的 dbus-daemon
Run dbus-daemon inside Docker container
我正在尝试创建一个 Docker 容器,其中包含自定义 D-Bus 总线 运行ning。
我将 Docker 文件配置如下:
FROM ubuntu:16.04
COPY myCustomDbus.conf /etc/dbus-1/
RUN apt-get update && apt-get install -y dbus
RUN dbus-daemon --config-file=/etc/dbus-1/myCustomDbus.conf
构建后,套接字已创建但已标记as "file", not as "socket",我无法将其用作总线...
-rwxrwxrwx 1 root root 0 Mar 20 07:25 myCustomDbus.sock
如果我删除此文件并在终端中再次 运行 dbus-daemon
命令,则会成功创建套接字:
srwxrwxrwx 1 root root 0 Mar 20 07:35 myCustomDbus.sock
我不确定这是 D-Bus 问题还是 docker 问题。
您应该使用启动脚本。 "run"命令仅在创建容器然后停止时执行。
而不是使用 "RUN" 命令,您应该使用 "ENTRYPOINT" 一到 运行 启动脚本。
Dockerfile 应如下所示:
FROM ubuntu:14.04
COPY myCustomDbus.conf /etc/dbus-1/
COPY run.sh /etc/init/
RUN apt-get update && apt-get install -y dbus
ENTRYPOINT ["/etc/init/run.sh"]
和run.sh:
#!/bin/bash
dbus-daemon --config-file=/etc/dbus-1/myCustomDbus.conf --print-address
我的run.sh:
if ! pgrep -x "dbus-daemon" > /dev/null
then
# export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address | cut -d, -f1)
# or:
dbus-daemon --config-file=/usr/share/dbus-1/system.conf
# and put in Dockerfile:
# ENV DBUS_SESSION_BUS_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
else
echo "dbus-daemon already running"
fi
if ! pgrep -x "/usr/lib/upower/upowerd" > /dev/null
then
/usr/lib/upower/upowerd &
else
echo "upowerd already running"
fi
然后 chrome 运行
--use-gl=swiftshader
没有错误
我正在尝试创建一个 Docker 容器,其中包含自定义 D-Bus 总线 运行ning。
我将 Docker 文件配置如下:
FROM ubuntu:16.04
COPY myCustomDbus.conf /etc/dbus-1/
RUN apt-get update && apt-get install -y dbus
RUN dbus-daemon --config-file=/etc/dbus-1/myCustomDbus.conf
构建后,套接字已创建但已标记as "file", not as "socket",我无法将其用作总线...
-rwxrwxrwx 1 root root 0 Mar 20 07:25 myCustomDbus.sock
如果我删除此文件并在终端中再次 运行 dbus-daemon
命令,则会成功创建套接字:
srwxrwxrwx 1 root root 0 Mar 20 07:35 myCustomDbus.sock
我不确定这是 D-Bus 问题还是 docker 问题。
您应该使用启动脚本。 "run"命令仅在创建容器然后停止时执行。
而不是使用 "RUN" 命令,您应该使用 "ENTRYPOINT" 一到 运行 启动脚本。
Dockerfile 应如下所示:
FROM ubuntu:14.04
COPY myCustomDbus.conf /etc/dbus-1/
COPY run.sh /etc/init/
RUN apt-get update && apt-get install -y dbus
ENTRYPOINT ["/etc/init/run.sh"]
和run.sh:
#!/bin/bash
dbus-daemon --config-file=/etc/dbus-1/myCustomDbus.conf --print-address
我的run.sh:
if ! pgrep -x "dbus-daemon" > /dev/null
then
# export DBUS_SESSION_BUS_ADDRESS=$(dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address | cut -d, -f1)
# or:
dbus-daemon --config-file=/usr/share/dbus-1/system.conf
# and put in Dockerfile:
# ENV DBUS_SESSION_BUS_ADDRESS="unix:path=/var/run/dbus/system_bus_socket"
else
echo "dbus-daemon already running"
fi
if ! pgrep -x "/usr/lib/upower/upowerd" > /dev/null
then
/usr/lib/upower/upowerd &
else
echo "upowerd already running"
fi
然后 chrome 运行
--use-gl=swiftshader
没有错误