1配置vmware中nat方式上网:

2.虚拟机中安装centos7,假设通过net方式上网获得的ip为192.168.146.128

3.安装docker,省略

4.启动一个容器:

docker   run    -idt      --name=slave1    --net=none  --privileged     ubantu:v0.0.1



5.使用pipework,创建虚拟网桥,并且设置ip和指定网关:

pipework安装的过程省略:

pipework   br0    slave1   192.168.146.141/24@192.168.146.140


注意:pipework会自动创建网关,但创建完成网关之后,并没有为网关分配ip:

为网关指定ip:

[root@localhost ~]# ifconfig   br0    192.168.146.140

配置完成之后。ping测试:

宿主机ping容器:



容器ping主机:

[root@localhost ~]# docker exec -it  slave1    /bin/bash


6.容器不能ping通外网:

由于使用了桥接的使用方式,需要查看防火墙中是否有指定的nat转发规则:

首先我们从容器ping一下外网:


不能ping通外网:

查看防火墙中nat表的转发规则:

iptables -t nat -vnL POSTROUTING --line-number




没有192.168网段的转发规则,

插入一条规则:

[root@localhost ~]#  iptables    -t  nat -A POSTROUTING -s 192.168.146.140/16 ! -o br0  -j MASQUERADE



再次查看规则:




再次ping外网:



如果还是ping不通外网,需要检查本机中的ip转发是否开启:

查看ip转发生否开启:

sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0

如果显示0,则表示ip转发功能没有开启,

开启的办法:(重启机器会失效)

sysctl -w net.ipv4.ip_forward=1

永久性的设置办法:

vi  /etc/sysctl.conf

加入:net.ipv4.ip_forward = 1

sysctl -p /etc/sysctl.conf

发现一个奇怪的问题。即使宿主机的防火墙关闭状态,容器ping通外网任然存在问题,

7.主机ping虚拟机中的容器:

将net方式上网的网卡添加到虚拟网桥中:

brctl  addif  br0  eno50332208,

再次从主机ping虚拟机:


























Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐