使Docker容器擁有可被宿主機以外的機器直接訪問的獨立IP
我們常用的docker容器都是將ip埠對映到宿主機,通過宿主機IP進行訪問。外部無法直接訪問容器IP,下面簡單介紹下怎麼做到區域網內直接訪問docker容器IP。
自動化指令碼見 https://github.com/liwei128/my_pipework.git,一鍵執行,so easy
說明如下
一、準備工作
1.首先安裝pipework
下載:gitHub地址 https://github.com/jpetazzo/pipework.git
檔案上傳用sftp方式連線,put進行上傳
將pipework檔案複製到/usr/bin/目錄下,並設定為可執行指令碼
cp pipework /usr/bin/
chmod +x /usr/bin/pipework
2.查詢我們的網絡卡名、網絡卡ip、以及預設閘道器,後面需要用到
我的為ens33 172.16.3.217 172.163.3.1
二、開始設定IP
注意:此步驟可能會斷開與宿主機的連線,因為網絡卡ens33的ip發生了變化,建議寫成指令碼檔案.sh的形式執行
1. 刪除ens33上面的ip地址
sudo ip addr del dev ens33 172.16.3.217/24
2. 新建網橋br0,並將ens33網絡卡橋接到br0
sudo ip link add link ens33 dev br0 type macvlan mode bridge
3.給網橋br0設定ip (為原ens33上的ip)
sudo ip addr add 172.16.3.217/24 dev br0
4.啟用br0
sudo ip link set dev br0 up5.給br0設定預設閘道器(為上面查詢到的預設閘道器),不然無法訪問
sudo ip route add default via 172.16.3.1 dev br0
6.為docker容器指定IP地址
sudo pipework br0 cmv3-manager 172.16.3.251/[email protected]
sudo pipework br0 cmv3-mysql 172.16.3.253/[email protected]
說明:br0是第3步新建的網橋名,cmv3-manager和cmv3-mysql是docker容器名,@前面表示你要為該容器設定的IP地 址,@後面為閘道器地址
這樣就將宿主機網絡卡以及docker容器接入了同一個網橋br0,實現區域網訪問容器ip。效果如下
三、回滾方案
如果你需要還原成原有的IP配置,只需要這樣:
sudo ip link delete br0
sudo service network restart
sudo systemctl restart docker
注意:此步驟可能會斷開與宿主機的連線,因為網橋br0被刪除了,建議寫成指令碼檔案.sh的形式執行
我們常用的docker容器都是將ip埠對映到宿主機,通過宿主機IP進行訪問。外部無法直接訪問容器IP,下面簡單介紹下怎麼做到區域網內直接訪問docker容器IP。
自動化指令碼見 https://github.com/liwei128/my_pipework.git,一鍵執行,so easy
說明如下
一、準備工作
1.首先安裝pipework
下載:gitHub地址 https://github.com/jpetazzo/pipework.git
檔案上傳用sftp方式連線,put進行上傳
將pipework檔案複製到/usr/bin/目錄下,並設定為可執行指令碼
cp pipework /usr/bin/
chmod +x /usr/bin/pipework
2.查詢我們的網絡卡名、網絡卡ip、以及預設閘道器,後面需要用到
我的為ens33 172.16.3.217 172.163.3.1
二、開始設定IP
注意:此步驟可能會斷開與宿主機的連線,因為網絡卡ens33的ip發生了變化,建議寫成指令碼檔案.sh的形式執行
1. 刪除ens33上面的ip地址
sudo ip addr del dev ens33 172.16.3.217/24
2. 新建網橋br0,並將ens33網絡卡橋接到br0
sudo ip link add link ens33 dev br0 type macvlan mode bridge
3.給網橋br0設定ip (為原ens33上的ip)
sudo ip addr add 172.16.3.217/24 dev br0
4.啟用br0
sudo ip link set dev br0 up5.給br0設定預設閘道器(為上面查詢到的預設閘道器),不然無法訪問
sudo ip route add default via 172.16.3.1 dev br0
6.為docker容器指定IP地址
sudo pipework br0 cmv3-manager 172.16.3.251/[email protected]
sudo pipework br0 cmv3-mysql 172.16.3.253/[email protected]
說明:br0是第3步新建的網橋名,cmv3-manager和cmv3-mysql是docker容器名,@前面表示你要為該容器設定的IP地 址,@後面為閘道器地址
這樣就將宿主機網絡卡以及docker容器接入了同一個網橋br0,實現區域網訪問容器ip。效果如下
三、回滾方案
如果你需要還原成原有的IP配置,只需要這樣:
sudo ip link delete br0
sudo service network restart
sudo systemctl restart docker
注意:此步驟可能會斷開與宿主機的連線,因為網橋br0被刪除了,建議寫成指令碼檔案.sh的形式執行