我目前正在寻找在docker容器中运行nmcli
nmcli在主机上运行良好,但是如果我要启动特权容器,nmcli将不起作用。
启动我的容器
sudo docker run --privileged --net host -it image_with_network-manager /bin/bash
然后运行nmcli
nmcli dev wifi => Error: Could not create NMClient object: Could not connect: No such file or directory
容器中的ifconfig正常,我拥有主机的eth0和wlan0
答案 0 :(得分:1)
关于networkmanager的事情是它在 dbus 上运行。我做了同样的事情(跟踪并查看需要的内容)
尝试将/var/run/dbus
挂载为一个卷。
sudo docker run --privileged --net host -it --volume /var/run/dbus image_with_network-manager /bin/bash
答案 1 :(得分:1)
我这样运行容器:
docker run -d -it --privileged=true --net host --volume /var/run/dbus:/var/run/dbus [other args here]
在Ubuntu18.04上有效。
注意:--volume /var/run/dbus:/var/run/dbus
而不是--volume /var/run/dbus
,并且上面的音量共享标志用于共享外部系统的总线。如果您需要容器具有自己的总线,则需要进行其他配置。
答案 2 :(得分:1)
在docker中尝试,这会在docker中创建自己的dbus
docker run -it --net=host image_name
dbus-uuidgen > /var/lib/dbus/machine-id
mkdir -p /var/run/dbus
dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address