docker使用pipework給容器分配路由器下的區域網ip

需求

需要讓docker容器使用路由器提供的內網ip,使用內網ip直接訪問容器。

環境準備

centos7系統、docker。

1.宿主機安裝pipework

wget -O pipework-master.zip //codeload.github.com/jpetazzo/pipework/zip/master
unzip pipework-master.zip
cp -p pipework-master/pipework /usr/local/bin/

2.修改宿主機網路為橋接

vim /etc/sysconfig/network-scripts/ifcfg-br0			
	TYPE=Bridge		
	DEVICE=br0		
	BOOTPROTO=static		
	ONBOOT=yes		
	IPADDR=192.168.2.80		
	NETMASK=255.255.255.0		
	GATEWAY=192.168.2.1		
			
vim /etc/sysconfig/network-scripts/ifcfg-em3			
	DEVICE=em3		
	ONBOOT=yes		
	BRIDGE=br0		
然後重啟網路確認修改後宿主機網路正常		

3.docker創建容器

docker run -itd --net=none --name=test-nginx1 nginx			
	    #--net=none不設置網路		

4.使用pipework設置docker網路

方式一:使用固定ip

pipework br0  test01  192.168.2.235/[email protected]			
        網橋  容器名     IP地址/網關地址			

方式二:使用dhcp

pipework br0 test1 dhcp
!若主機環境中存在dhcp伺服器,才可以通過dhcp的方式獲取IP			

5.測試

進入容器、執行ip addr可看到容器已得到由路由器分配的ip
  docker exec -it xx /bin/bash				
  ifconfig
此時容器可正常與內網和公網聯通			

注意

重啟容器後 ip會丟失,需要重新設置。
可使用腳本檢查容器狀態,並自動執行設置。
Tags: