容器内需要使用宿主机提供的服务,某些情况下需要控制宿主机的服务状态(service XXX start|stop);
下面列了几种解决方案,但是实现起来有点啰嗦,或许容器可以直接控制宿主机的服务?
备用解决方案
在宿主机搭个 HTTP 服务,通过 HTTP 来通信,例如:
http://127.0.0.1/start -> service xxx start
http://127.0.0.1/stop -> service xxx stop
跟上面差不多监控某个目录 or 文件,出现指定特征就触发对应的指令。
1
hcymk2 2017-12-25 16:37:34 +08:00
控制不好的话,感觉是做死行为。
|
3
zmj1316 2017-12-25 16:56:16 +08:00
potainer 在容器里面控制 docker 宿主是通过挂载外面的 socket 文件进去来控制的
|
4
zuolan 2017-12-25 17:02:12 +08:00 1
那我提供一个作死思路:
Linux 下不是有个 chroot 工具吗, 把宿主机的根目录挂载到容器中(-v /:/host_dir), 容器给够权限, 然后在容器里面执行 chroot 命令(chroot /host_dir /bin/sh), 这样就可以获得宿主机几乎全部 root 功能, 自由操作吧. 参考 Dockerfile: ``` FROM busybox ENTRYPOINT ["chroot","/host_dir","/bin/sh -c"] ``` 参考启动方式: ``` docker run -v /:/host_dir --name chroot --privileged --rm -it IMAGE_NAME "service XXX start|stop" ``` 其中的"service XXX start|stop"就是你想在宿主机执行的命令, 包括监控什么的随便你玩了. 这个做法很作死, 哈. |
6
ryd994 2017-12-26 03:41:02 +08:00 via Android
SNMP trap
|