1
xiaochocking OP 自己回复一条骗大佬进来
|
2
ChristopherWu 2018-11-28 17:10:09 +08:00
@xiaochocking 宿主机起一个后端服务,接受 nodejs 网关的调用,从而执行宿主机脚本。
|
3
cluulzz 2018-11-28 17:11:33 +08:00 via iPhone 1
宿主跑 pm2
你暴露了 |
4
xiaochocking OP @ChristopherWu 这样还有用 docker 跑 node 的必要吗..
|
5
wfd0807 2018-11-28 17:16:32 +08:00
应该不会有 docker 的原生解决方案
|
6
hcymk2 2018-11-28 17:20:09 +08:00 1
|
7
shylockhg 2018-11-28 17:20:27 +08:00
-v 不知道可以不
|
8
Kilerd 2018-11-28 17:35:45 +08:00 1
当然有啊。
在 NodeJS Gateway 的 Docker 里面传入宿主机的 docker.sock 不就可以操作这台机子的所有 docker 容器了嘛 |
9
NotNil1 2018-11-28 17:41:04 +08:00
--privileged 试一试
|
10
stebest 2018-11-28 17:43:49 +08:00
直接挂载目录不行么
|
11
xiaochocking OP |
12
jeffson 2018-11-28 18:54:42 +08:00
问题刁钻
|
13
jinhan13789991 2018-11-28 18:57:10 +08:00 via Android
可以啊,本机开启 SSH,docker 宿主机登录然后操作
|
14
xiaochocking OP @jeffson /doge
|
15
xiaochocking OP @jinhan13789991 查到有人是这样做的
|
16
uoryon 2018-11-28 19:02:07 +08:00
@xiaochocking 你想执行宿主机的 bash,那就把 bash 以及 bash 操作的东西都能让这个容器访问到呀。
|
17
zn 2018-11-28 19:05:58 +08:00 via iPhone
docker 一大功能,或者说亮点,就是防止这种事的发生………
|
18
killadm 2018-11-28 19:06:38 +08:00
ssh 进去
|
19
mritd 2018-11-28 19:10:19 +08:00 via iPhone
事实上,你本就不应该这么做
|
20
mritd 2018-11-28 19:11:12 +08:00 via iPhone
这个事是编排工具 或者 ci 做的,所以你会发现 google 没啥结果
|
21
xiaochocking OP @zn 感觉的确是反模式,除了需要执行宿主命令,还是挺适合在容器里跑的,所以才想找找方法
|
22
gam2046 2018-11-28 19:49:46 +08:00 2
十分诡异的需求,docker 设计的目的就是为了资源隔离,结果你现在希望在容器中逃逸。
你有这样的需求,你的 nodejs 就不应该在 docker 中运行,直接在宿主运行即可。 如果你希望在 docker 中控制(启动、终止、创建、删除)其他容器,只需要将宿主环境下的 /var/docker/docker.sock 挂载到容器内即可。 |
23
vakara 2018-11-28 22:05:43 +08:00 via Android 1
挂宿主机 /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 2018-11-28 22:06:30 +08:00 via Android
这个需求不诡异,一些监控功能的容器都是这样用的。
|
25
yujincheng08 2018-11-28 23:44:07 +08:00 via Android
挂载目录,然后弄个管道。host 弄个监控教程 fork 然后执行命令?
|
26
NotNil1 2018-11-29 09:53:11 +08:00
@xiaochocking 可以的,我的可以
|
27
julyclyde 2018-11-29 10:46:40 +08:00
“用 docker ”是“穿上裤子再放那个本来应该光屁股的时候就放的屁”
|
28
hotsymbol 2018-11-30 00:46:25 +08:00
到 Moby (原 Docker )提个 Issues 不就行了
|
29
xiaochocking OP @ljtletters 老哥你还做了什么步骤
|
30
xiaochocking OP @vakara 试了你那个方法 当我执行 touch 的时候 报 Read-only file system
|
31
vakara 2018-12-04 22:58:59 +08:00 via Android
@xiaochocking 你往哪里 touch 的?怎么执行的?
|
32
xiaochocking OP @vakara 就是你那句 nsenter --mount=/host/proc/1/ns/mnt sh -c "ls /root" ,list /root 改成 touch xxx
|