我通过虚拟盒获得了Ubuntu 16.04映像。开箱即用,它通过虚拟机的NAT选项通过主机操作系统获得互联网 问题是当我安装docker-ce(版本18.03.1)时,它会安装一个可以连接互联网的brigde连接
nmcli设备状态显示:
docker0 brigde connected docker0
enp0s3 ethernet connected Wired connection 1
lo loopback unmanaged --
我意识到enp0s3和docker0在不同的子网中
ifconfig显示:
docker0 Link encap:Ethernet HWaddr 02:42:40:2a:c5:ac
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
enp0s3 Link encap:Ethernet HWaddr 08:00:27:57:af:e4
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
route -n命令显示:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
docker network ls命令显示:
NETWORK ID NAME DRIVER SCOPE
357f65a4b16e bridge bridge local
8ba7ce283fd1 host host local
0aa5fcaafe8b none null local
我怎样才能在ubuntu上使用docker和internet工作?我想我需要在docker0更改一些配置,但网络不是我的专长。 提前致谢
答案 0 :(得分:0)
我今天正在与同样的问题作斗争,升级到Docker 18.05解决了这个问题。 在Fedora中我做到了这样:
dnf update docker-ce --enablerepo=docker-ce-test
它安装了docker-ce-18.05.0.ce-3.fc27.x86_64问题所在。
在Ubuntu中,您可以通过以下命令进行更新:
apt-get install docker-ce=18.05.0~ce~3-0~ubuntu
如果您没有添加Docker测试存储库,请先添加它:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) test"
答案 1 :(得分:0)
Add the name server, 8.8.8.8, to the DNS resolver,方法是编辑 /etc/resolvconf/resolv.conf.d/head 并添加以下内容。这应该在重新启动后起作用。
nameserver 8.8.8.8
通过执行以下命令来更新DNS解析配置文件 /etc/resolv.conf 。
sudo resolvconf -u
GitHub上有很多与此有关的问题。
https://github.com/moby/moby/issues/36153
https://github.com/docker/libnetwork/issues/2187
答案 2 :(得分:0)
对我来说,docker 搞乱了现有的路由规则。例如。需要连接到 172.20.blah(通常采用默认路由,并且某些东西最终知道将流量发送到哪里),但 docker 使用自己的路由规则劫持了它。它通常存在恰好使用相同地址范围的 LAN 和 VPN 网络。基本上,在盲目地破坏它之前,它不会费心检查子网是否正在使用 - 我实际上不确定这是否可行,因为默认范围涵盖了所有内容。除了咆哮,这有效:
清理它留下的路线(最终这就是问题所在)
route -n
看看它为什么坏了。然后……
sudo route del -net 172.19.0.0 netmask 255.255.0.0 dev br-5094d9589bea
sudo route del -net 172.20.0.0 netmask 255.255.0.0 dev br-964b736ea39c
告诉它改用哪个子网:
sudo service docker stop
sudo nano /etc/docker/daemon.json
添加一些类似的内容:
{
"bip": "192.168.1.5/24",
"fixed-cidr": "192.168.1.5/25",
"default-address-pools":[
{"base":"192.168.2.5/24","size":28}
]
}
见:https://docs.docker.com/network/bridge/#use-the-default-bridge-network
sudo service docker start
另见: