按照说明,我在 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/