我有以下容器设置。
在裸机服务器上安装并运行了两个 Docker 守护进程。
我想让客户访问Plugin Docker Daemon的 API (2376),以便客户可以部署/启动/停止他自己的容器。客户只能访问 API,而不能访问主机 (SSH)。
我目前面临的问题是,如果客户运行的容器执行诸如docker run -v /:/host/root Ubuntu rm -rf /host/root
.
我的问题是我能做些什么来防止插件 Docker 守护程序挂载根目录/
或外部的任何其他目录/home/user/
,
/home/user/
?--userns-remap
帮助我实现我的目标吗?服务器完全属于单个客户。因此,安全性或数据泄漏不是我的主要关注点。我真正想防止的是Plugin Daemon中的某个人正在做一些愚蠢的事情,这会影响我在Main Docker Daemon中运行的容器。我想保持精益并坚持仅使用 docker 的工作流程,并且不会为 VM 创建设置额外的工作流程。
我在 Scaleway 上有几个 linux 测试盒,每个都有 2 个 NIC,它们都连接到同一个网络,10.0.0.0/8
但每个都有自己的网关。
我希望能够同时使用 NIC(eth0/eth1)及其 IP 进行通信。因此,如果应用程序绑定到 IP .187,则应使用 dev eth0。如果应用程序绑定到 IP .189,则应使用 eth1。
现在只有 IP 为 .187 的接口 eth0 正在响应请求。任何请求。(这就是我使用 ping 和 ssh 进行测试的原因)。但是,如果我将默认路由从 eth0 更改为 eth1(ip .189),则传出流量将通过 eth1 正确路由,在这种情况下,eth0 将不可用。
那么如何配置盒子,这样两个接口都可以使用。
Box 1:
eth0_ip = 10.5.68.187/31
eth0_gw = 10.5.68.186
eth1_ip = 10.5.68.189/31
eth1_gw = 10.5.68.188
Run Code Online (Sandbox Code Playgroud)
根据我的研究,here,here我创建了一个 bash 脚本,该脚本应该添加带有表的静态路由,以便可以同时使用两个网卡。
#/bin/bash
# My Vars with IP and GW for eth0
eth0_ip=$(ip -o -4 addr list eth0 | …
Run Code Online (Sandbox Code Playgroud) 我正在使用命令行按照相同的模式手动执行相同的命令多次。现在我正在寻找一种方法来简化它,只需输入一次命令即可。
让我们看一个普通的 docker 示例:
docker ps
docker ps -a
docker ps -l
docker stop x
docker start x
docker start y
docker logs y
docker logs -f z
Run Code Online (Sandbox Code Playgroud)
此示例也适用于更多命令,例如 git、brew、gulp、gcloud。
现在我正在寻找某种命令包装外壳,它允许我编写with docker
将任何命令包装在嵌套/子外壳中的命令。
然后我不需要在docker
命令前面加上命令,只需调用:
>ps
# does docker ps and displays result
>stop x
# prepends docker so docker stop x is actually executed
CTRL+C # to exit the command wrapper
Run Code Online (Sandbox Code Playgroud)
像这样的东西已经存在了吗?我在谷歌上搜索它,但无法正确描述它,因此我没有找到任何东西。
linux ×2
apparmor ×1
chroot ×1
docker ×1
ip-routing ×1
iproute ×1
networking ×1
routing ×1
selinux ×1
shell ×1