小编Vad*_*imo的帖子

如何禁止 Docker Daemon 将主机的根文件系统挂载到容器中

我有以下容器设置。

在裸机服务器上安装并运行了两个 Docker 守护进程。

  1. 主 Docker 守护进程运行我的应用程序容器,将 80/443 暴露给外界。
  2. Plugin Docker Daemon运行客户提供的一些容器,这些容器通过 80/443 与我的应用程序通信。

我想让客户访问Plugin Docker Daemon的 API (2376),以便客户可以部署/启动/停止他自己的容器。客户只能访问 API,而不能访问主机 (SSH)。

我目前面临的问题是,如果客户运行的容器执行诸如docker run -v /:/host/root Ubuntu rm -rf /host/root.

我的问题是我能做些什么来防止插件 Docker 守护程序挂载根目录/或外部的任何其他目录/home/user/

  • 是否可以选择在 Docker 守护进程中启动/home/user/
  • 我可以使用一些 LSM(Linux 安全模块 SELinux/Apparmor)魔法来阻止 docker 守护进程挂载除用户 home 或 var/docker/libs 之外的部分或所有主机路径吗?
  • 可以--userns-remap帮助我实现我的目标吗?
  • 除了虚拟机,还有其他可用的选项吗?

服务器完全属于单个客户。因此,安全性或数据泄漏不是我的主要关注点。我真正想防止的是Plugin Daemon中的某个人正在做一些愚蠢的事情,这会影响我在Main Docker Daemon中运行的容器。我想保持精益并坚持仅使用 docker 的工作流程,并且不会为 VM 创建设置额外的工作流程。

linux selinux chroot apparmor docker

8
推荐指数
1
解决办法
5389
查看次数

将流量路由到同一网络上的两个 NIC

我在 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)

方法

根据我的研究,herehere我创建了一个 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)

networking routing ip-routing linux-networking iproute

5
推荐指数
1
解决办法
1697
查看次数

寻找一种包装命令并提供自己的外壳的方法

我正在使用命令行按照相同的模式手动执行相同的命令多次。现在我正在寻找一种方法来简化它,只需输入一次命令即可。

让我们看一个普通的 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 shell command-line-interface shell-scripting

3
推荐指数
1
解决办法
929
查看次数