一般安裝docker后都會通過端口轉發的方式使用網絡,比如 “-p 2294:22” 就將2294抓發到22端口來提供sftp服務,這樣使用起來沒有問題。但端口號很難記憶,如果前邊有nginx等抓發工具,可以將2294再轉回22,但有沒有方法直接給docker容器配置獨立ip地址呢?
一、以下兩種方式都需要安裝 pipework
其作用是指定物理網段容器IP地址
cd /usr/src # 若沒有wget命令,安裝 yum install -y wget wget -O pipework-master.zip https://codeload.github.com/jpetazzo/pipework/zip/master # 若沒有unzip命令,安裝 yum install -y unzip zip unzip pipework-master.zip cp -p pipework-master/pipework /usr/local/bin/
以下兩個種方式重啟后ip地址都會丟失,所以每次重啟后都要重新分配ip地址
二、通過虛擬網卡br0橋接
1、修改宿主機物理網卡配置
vi /etc/sysconfig/network-scripts/ifcfg-em1
修改兩個配置
BOOTPROTO=none # 配置不啟動dhcp BRIDGE=br0 # 配置網橋
2、增加網橋設備 br0
vi /etc/sysconfig/network-scripts/ifcfg-br0
在其中增加如下內容
DEVICE=br0 ONBOOT=yes TYPE=Bridge BOOTPROTO=dhcp
配置完成后重新啟動網絡,此時 br0 設備就使用的物理網卡 em1 作為橋接通信。
3、創建容器(創建了一個centos7的容器)
docker run -itd --net=none --name=test01 ansible/centos7-ansible /bin/bash # 其中 --net=none不設置網絡
4、給創建的容器制定物理IP地址
pipework br0 test01 192.168.2.235/24@192.168.2.1 # 網橋 容器名 IP地址 網關地址
5、進入容器查看ip地址
docker exec -it test01 /bin/bash # 進入test01容器 yum install -y net-tools # 安裝ifconfig ifconfig
此時就應該看到配置的 192.168.2.235 這個ip。
此種方法的問題是,之后每個容器都需要指定一個ip地址。
三、通過物理網卡橋接
3.1 綁定物理ip
1、創建容器(創建了一個centos7的容器)
docker run -itd --net=none --name=test02 ansible/centos7-ansible /bin/bash # 其中 --net=none不設置網絡
2、給創建的容器制定物理IP地址,其中eth0跟據實際情況修改
pipework eth0 test02 192.168.2.234/24@192.168.2.1 # 網橋 容器名 IP地址 網關地址
3、進入容器查看ip地址
docker exec -it test02 /bin/bash # 進入test01容器 yum install -y net-tools # 安裝ifconfig ifconfig
此時就應該看到配置的 192.168.2.234 這個ip。
此種方法的問題是,之后每個容器都需要指定一個ip地址。
3.2 使用內網地址172.x.x.x
1、創建容器(創建了一個centos7的容器)
docker run -itd --name=test03 ansible/centos7-ansible /bin/bash
2、進入容器查看ip地址
docker exec -it test03 /bin/bash # 進入test01容器 yum install -y net-tools # 安裝ifconfig ifconfig
四、重啟后固定ip
以上防范重啟后需要使用shell腳本的方式重新分配ip地址,也可使用 docker-static-ip 固定ip
實現與pipework一樣,只是用Python把整個指定的IP的操作變成后台進程,把 [容器,網橋,IP地址,網關]寫進containers.cfg 。
程序會根據配置文件來自動設置容器的IP地址,每10秒檢查一次,如果有新增的就會自動設置。
當重啟容器時,IP地址消失,程序會根據配置文件再次自動分配。
使用說明代碼下載地址參見 https://github.com/lioncui/docker-static-ip
參考文檔:
http://blog.51cto.com/12832314/1929936?utm_source=oschina-app
https://blog.csdn.net/xitongfengxi/article/details/52249988
https://blog.csdn.net/fgf00/article/details/52575500
http://www.jb51.net/article/118396.htm
https://www.cnblogs.com/xuezhigu/p/8257129.html