我希望运行一个码头容器,它将能够在其主机上运行systemctl命令。
在这问题之后,我没有找到适合我的解决方案。
我没有硬性限制的对接基地形象,所以使用ubuntu-16.04对接形象的一个ubuntu-16.04主机和ubuntu-18.04对接图像为一个ubuntu-18.04主机是完全可以接受的。
发布于 2020-12-03 16:04:38
经过一些调查之后,我能够运行一个具有运行systemctl命令能力的码头容器。
systemctl没有附带此映像发布于 2021-01-27 09:39:20
谢谢你
在debian:10上尝试了您的解决方案,您的解决方案有效地允许运行systemctl,但它不允许它查看/控制主机的系统进程。要使其工作,还必须将/sys/fs/cgroup目录作为卷挂载:
docker run -it --rm -v /bin/systemctl:/bin/systemctl -v /run/systemd/system:/run/systemd/system -v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket -v /sys/fs/cgroup:/sys/fs/cgroup debian:10 systemctl --no-pager status这样,我就可以控制主机的systemd服务,甚至可以通过systemd进行关闭/重新引导。
这似乎是特定于Debian 10,而不需要Ubuntu18.04。其他Debian/Ubuntu版本可能需要也可能不需要它。
发布于 2022-02-21 13:27:41
不允许发表评论。但这对我的Ubuntu18.04设置有效:
sudo docker run --privileged \
-v /run/systemd/system:/run/systemd/system \
-v /lib/:/lib/ \
-v /usr/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/ \
-v /bin/systemctl:/bin/systemctl \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \
-it ubuntu:18.04 /bin/sh -c "systemctl restart openvpn.service; systemctl status openvpn.service"如果命令抱怨error while loading shared libraries: libip4tc.so.0: ->,请运行locate libip4tc.so.0以查找该文件的位置,并将该文件夹作为卷挂载。
https://askubuntu.com/questions/1297226
复制相似问题