X Chen笔记----Docker 为容器配置独立IP

为了让容器使用独立的ip地址,首先要将主机配置成桥接模式,然后再使用pipework命令给指定容器分配ip地址。

 

      docker支持四种网络模式,使用--net选项指定:

  • host,--net=host,如果指定此模式,容器将不会获得一个独立的network namespace,而是和宿主机共用一个。容器将不会虚拟出自己的网卡,IP等,而是使用宿主机的IP和端口,也就是说如果容器是个web,那直接访问宿主机:端口,不需要做NAT转换,跟在宿主机跑web一样。容器中除了网络,其他都还是隔离的。

  • container,--net=container:NAME_or_ID,与指定的容器共同使用网络,也没有网卡,IP等,两个容器除了网络,其他都还是隔离的。

  • none ,--net=none,获得独立的network namespace,但是,并不为容器进行任何网络配置,需要我们自己手动配置。

  • bridge,--net=bridge,默认docker与容器使用nat网络,一般分配IP是172.17.0.0/16网段,要想改为其他网段,可以直接修改网桥IP地址,例如:

  $ sudo ifconfig docker0 192.168.10.1 netmask 255.255.255.0

 

1.安装网桥设备

#yum install -y bridge-utils

2.配置桥接网卡

先将原网卡配置文件中的IP地址,掩码,网关,DNS删除或注释;并在配置文件中加入语句BRIDGE="br0" (此处br0为桥接网卡名,根据实际也可为br1,br2等任意名字)

vi /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=27086e21-3a51-47f0-b03b-90362a902271
DEVICE=eth0
ONBOOT=yes

#IPADDR=10.7.31.236
#NETMASK=255.255.255.224
#GATEWAY=10.7.31.225
#DNS1=219.232.82.67
#DNS2=219.232.82.68

BRIDGE="br0"

再新建一个桥接网卡配置文件br0,并将ip,掩码,网关,DNS写入。

#vi /etc/sysconfig/network-scripts/ifcfg-
TYPE=Bridge
BOOTPROTO=none
IPADDR=10.7.31.236
NETMASK=255.255.255.224
GATEWAY=10.7.31.225
DNS1=219.232.82.67
DNS2=219.232.82.68
NAME=br0
ONBOOT=yes
DEVICE=br0

两个网卡的配置文件都配置好后,重启网卡新配置即可生效。service network restart

 

3. 启动容器,并指定网络模式为none

# docker run -it -d --net=none --name 自定义容器名 镜像名 /bin/bash

4. 安装pipework

# git clone https://github.com/jpetazzo/pipework.git
# cp -rp pipework/pipework /usr/local/bin

5. 为容器设置ip地址

# pipework 网桥名 容器名 ip地址/掩码@网关
# pipework br0 dhcp 10.7.31.237/[email protected]

 

参考:https://blog.csdn.net/feinifi/article/details/69487452

           https://www.cnblogs.com/zipon/p/6362401.html

你可能感兴趣的:(X Chen笔记----Docker 为容器配置独立IP)