vmware中使用net方式配置docker靜態ip

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/[email protected]


注意: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虛擬機:


























發佈了28 篇原創文章 · 獲贊 33 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章