NAT 在容器中不起作用

NAT 在容器中不起作用

按照说明,我在 ubuntu 13.04(和 12.04 + 3.8 内核)上安装了 docker,拉取了基础容器并在其中启动了一个 shell。它有一个私有 IP,可以 ping 通它的默认网关,但无法连接到外部的任何主机,因此对我来说没有 apt-get。

我的 sysctl 中有“net.ipv4.conf.all.forwarding = 1”,并且在 iptables/nat 表中有 POSTROUTING 规则。

docker 安装程序是否忘记添加一些规则或者我遗漏了什么?

答案1

你们有 MASQUERADE 规则吗?

您可以尝试启动守护进程docker -d -b testbr0并再试一次吗?

这将创建一个新的桥并为其设置所有 iptables 规则。

如果成功,则可能意味着iptables -t nat -F在某个时刻发生了问题,docker 的 nat 规则已丢失。您可以手动重新创建它们,或者更轻松地删除 docker 桥并重新启动 docker :)

答案2

你使用docker网络吗?

在docker网络中,您可以决定哪种类型的网络适用于您的容器。

甚至你可以进行自己的网络设置

对于网桥示例,可以使用此命令和您自己喜欢的 IP 范围:

sudo docker network create \
    --driver=bridge \
    --subnet=172.19.0.0/16 \
    --gateway=172.19.0.1 \
    custom_bridge_network

添加后,使用命令--network上的选项docker run将网络添加到容器中

但对于你的问题,我建议你在 docker 容器上使用 macvlan 网络 祝你好运 https://docs.docker.com/network/macvlan/

相关内容