事情就是用容器跑了一个 nodejs 网关,用来分发流量到其他几个后端接口容器,想在 nodejs 网关的前端配置页面就能执行宿主机脚本,以依次重启、更新接口容器的代码,相当于热重启了。有没有较优雅的方式实现,google 了几轮,都没有人这样做的吗?
|
1
自己回复一条骗大佬进来
|
|
huoruNov 28, 2018
2
@xiaochocking 宿主机起一个后端服务,接受 nodejs 网关的调用,从而执行宿主机脚本。
|
|
3
宿主跑 pm2
你暴露了 |
|
4
@ChristopherWu 这样还有用 docker 跑 node 的必要吗..
|
|
wfd0807Nov 28, 2018
5
应该不会有 docker 的原生解决方案
|
|
shylockhgNov 28, 2018
7
-v 不知道可以不
|
|
8
当然有啊。
在 NodeJS Gateway 的 Docker 里面传入宿主机的 docker.sock 不就可以操作这台机子的所有 docker 容器了嘛 |
|
NotNil1Nov 28, 2018
9
--privileged 试一试
|
|
stebestNov 28, 2018
10
直接挂载目录不行么
|
|
11
|
|
jeffsonNov 28, 2018
12
问题刁钻
|
|
jinhan13789991Nov 28, 2018 via Android
13
可以啊,本机开启 SSH,docker 宿主机登录然后操作
|
|
15
@jinhan13789991 查到有人是这样做的
|
|
uoryonNov 28, 2018
16
@xiaochocking 你想执行宿主机的 bash,那就把 bash 以及 bash 操作的东西都能让这个容器访问到呀。
|
|
znNov 28, 2018 via iPhone
17
docker 一大功能,或者说亮点,就是防止这种事的发生………
|
|
killadmNov 28, 2018
18
ssh 进去
|
|
mritdNov 28, 2018 via iPhone
19
事实上,你本就不应该这么做
|
|
mritdNov 28, 2018 via iPhone
20
这个事是编排工具 或者 ci 做的,所以你会发现 google 没啥结果
|
|
22
十分诡异的需求,docker 设计的目的就是为了资源隔离,结果你现在希望在容器中逃逸。
你有这样的需求,你的 nodejs 就不应该在 docker 中运行,直接在宿主运行即可。 如果你希望在 docker 中控制(启动、终止、创建、删除)其他容器,只需要将宿主环境下的 /var/docker/docker.sock 挂载到容器内即可。 |
|
23
挂宿主机 /proc 到容器 /host/proc,
运行容器加 --privileged, 然后容器里面通过 nsenter --mount=/host/proc/1/ns/mnt sh -c "ls /root" 这样执行。 如果需要网络数据的话用 nsenter --net=/host/proc/1/ns/net sh ... |
|
vakaraNov 28, 2018 via Android
24
这个需求不诡异,一些监控功能的容器都是这样用的。
|
|
yujincheng08Nov 28, 2018 via Android
25
挂载目录,然后弄个管道。host 弄个监控教程 fork 然后执行命令?
|
|
NotNil1Nov 29, 2018
26
@xiaochocking 可以的,我的可以
|
|
julyclydeNov 29, 2018
27
“用 docker ”是“穿上裤子再放那个本来应该光屁股的时候就放的屁”
|
|
hotsymbolNov 30, 2018
28
到 Moby (原 Docker )提个 Issues 不就行了
|
|
29
@ljtletters 老哥你还做了什么步骤
|
|
vakaraDec 4, 2018 via Android
31
@xiaochocking 你往哪里 touch 的?怎么执行的?
|