网络模式
在启动容器的时候如果需要指定网络模式run的时候加入选项--net=host|none|container|bridge(桥接是不指定时候系统默认的)
Host模式
容器不会拥有独立的网络系统,跟宿主机公用一个网络系统,公用宿主机ip和端口
None模式
会给容器分配网络系统,但是不会设置网卡和路由,IP信息,需要自己去指定
Container模式
不会拥有独立的网络系统,跟已存在的容器共享IP和网络空间
Bridge模式(桥接模式)(企业常用)
默认启动模式,桥接模式:docker0(绑定在宿主机网卡,虚拟二层交换机)用单独的ip
pipework设置静态ip
https://codeload.github.com/jpetazzo/pipework/zip/master
下载pipework包
解压unzip
cd 到pipwork目录后 复制pipework到/usr/local/bin/
宿主机ip为192.168.1.100
想让dockerr容器ip静态成192.168.1.105并且可以通过ssh直接登陆这台机器
生产环境推荐方法
配一个br0网桥
brctl addbr br0
--开启docker的br0--pipework配置静态IP
(补充:创建了br0后,增加配置文件,重启网卡可能会连不上,这时候要去真机去brctl show 看看br0有没有跟物理网卡对应上,没有就执行brctl addif br0 ens33(真网卡名字)-将虚拟网桥和真网卡建立联系)
修改配置文件,更改ifcfg-eth0同时增加ifcfg-br0配置文件,重启网卡服务,在vi 、/etc/sysconfig/docker-network DOCKER_NETWORK_OPTION Sip add="-b=br0"
[root@server-1 network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
NM_CONTROLLED=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.106.0.20
[root@server-1 network-scripts]# cat ifcfg-br0
TYPE=Bridge #类型写桥接
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
NM_CONTROLLED=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
DEVICE=br0 #设备改成br0
ONBOOT=yes #这里要是yes开机自启
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=202.106.0.20
#开启docker的br0
[root@server-1 network-scripts]# cat /etc/sysconfig/docker-network
# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS='-b=br0'
#重启docker服务
[root@server-1 network-scripts]# systemctl restart docker
重启网卡后,IP ADD看到有了br0
然后启动容器docker (网络模式指定none,此时容器没有IP)再用pipework配置
docker run -itd --name centos6_1 --privileged --net=none docker.io/lemonbar/centos6-ssh
pipework br0 4a0c 192.168.1.251/24@192.168.1.254
还可以在启动容器的时候加入--net=none后跟上特权选项--privileged ,进入容器后在手动修改IP地址重启网卡和宿主机一样