docker - 如何让docker只使用eth1接口(interface)与其他主机通信?

标签 docker

我正在使用 digital ocean 。接口(interface)“eth1”是私有(private)的,“eth0”是公共(public)的。如何让 docker docker0 创建的网桥仅使用私有(private)接口(interface) eth1?

最佳答案

docker 创建的网桥未附加到任何物理接口(interface)。外部访问由 iptables nat 表中的第 3 层转发和 NAT 规则进行调节。

这意味着您可以通过操作路由表和/或防火墙规则来控制 Docker 容器使用哪个接口(interface)。例如,为了防止容器将流量转发出 eth0:

iptables -A FORWARD -i docker0 -o eth0 -j DROP

这会减少来自容器的所有流量,这些流量将传出 eth0

当然,如果 (a) 您的容器正在尝试访问外部主机,并且 (b) 到该主机的唯一路由是通过您的默认网关(可能位于 eth0 之外),那么您的容器现在运气不佳。

关于docker - 如何让docker只使用eth1接口(interface)与其他主机通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32289417/

相关文章:

linux - 在 Docker 容器中运行的进程的主机中的 PID 是什么?

windows - 在 Windows : Entrypoint script "no such file or directory" 上构建 Docker 镜像

docker - 如何在 docker build 中访问互联网?

python - 将文件从 docker 卷导出到另一个目录

docker - docker 容器如何可靠地表明它们不仅在运行,而且已经准备就绪?

c++ - 如何在 CentOS 8 docker 上安装 gcc/g++ 9 (centos :latest)

docker - 有没有办法使用 conda 或通过 tar 文件安装 Boto3?

linux - Google Cloud Run 和系统功能

php - Zend Framework 2 + docker :MongoDB ConnectionTimeoutException

java - 与 Spring Boot Docker 容器的服务间 RestTemplate 通信问题