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