linux 网络类型,docker有哪些网络类型?Linux学习

一、网络类型类型说明

None不为容器配置任何网络功能,没有网络 --net=none

Container与另一个运行中的容器共享Network Namespace,--net=container:containerID

Host与主机共享Network Namespace,--net=host

BridgeDocker设计的NAT网络模型(默认类型)

Bridge默认docker网络隔离基于网络命名空间,在物理机上创建docker容器时会为每一个docker容器分配网络命名空间,并且把容器IP桥接到物理机的虚拟网桥上。

二、不为容器配置网络功能

此模式下创建容器是不会为容器配置任何网络参数的,如:容器网卡、IP、通信路由等,全部需要自己去配置。[root@docker01 ~]# docker run  -it --network none busybox:latest  /bin/sh

/ # ip a

1: lo:  mtu 65536 qdisc noqueue

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

三、与其他容器共享网络配置(Container)

此模式和host模式很类似,只是此模式创建容器共享的是其他容器的IP和端口而不是物理机,此模式容器自身是不会配置网络和端口,创建此模式容器进去后,你会发现里边的IP是你所指定的那个容器IP并且端口也是共享的,而且其它还是互相隔离的,如进程等。[root@docker01 ~]# docker run  -it --network container:mywordpress_db_1  busybox:latest  /bin/sh

/ # ip a

1: lo:  mtu 65536 qdisc noqueue

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

105: eth0@if106:  mtu 1500 qdisc noqueue

link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff

inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0

valid_lft forever preferred_lft forever

四、使用宿主机网络

此模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机的所有端口与IP,并且这个模式认为是不安全的。[root@docker01 ~]# docker run  -it --network host  busybox:latest  /bin/sh

五、查看网络列表[root@docker01 ~]# docker network list

NETWORK ID          NAME                  DRIVER              SCOPE

b15e8a720d3b        bridge                bridge              local

345d65b4c2a0        host                  host                local

bc5e2a32bb55        mywordpress_default   bridge              local

ebf76eea91bb        none                  null                local

六、用PIPEWORK为docker容器配置独立IP

宿主环境:centos7.2

1、安装pipeworkwget https://github.com/jpetazzo/pipework/archive/master.zip

unzip master.zip

cp pipework-master/pipework  /usr/local/bin/

chmod +x /usr/local/bin/pipework

2、配置桥接网卡

安装桥接工具yum install bridge-utils.x86_64 -y

修改网卡配置,实现桥接# 修改eth0配置,让br0实现桥接

[root@docker01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

BOOTPROTO=static

NAME=eth0

DEVICE=eth0

ONBOOT=yes

BRIDGE=br0

[root@docker01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0

TYPE=Bridge

BOOTPROTO=static

NAME=br0

DEVICE=br0

ONBOOT=yes

IPADDR=10.0.0.100

NETMASK=255.255.255.0

GATEWAY=10.0.0.254

DNS1=223.5.5.5

# 重启网络

[root@docker01 ~]# /etc/init.d/network restart

3、运行一个容器镜像测试:pipework br0 $(docker run -d -it -p 6880:80 --name  httpd_pw httpd) 10.0.0.220/24@10.0.0.254

在其他主机上测试端口及连通性[root@docker01 ~]# curl 10.0.0.220

It works!

[root@docker01 ~]# ping 10.0.0.220 -c 1

PING 10.0.0.220 (10.0.0.220) 56(84) bytes of data.

64 bytes from 10.0.0.220: icmp_seq=1 ttl=64 time=0.043 ms

4、再运行一个容器,设置网路类型为none:pipework br0 $(docker run -d -it --net=none --name test httpd:2.4) 10.0.0.221/24@10.0.0.254

进行访问测试[root@docker01 ~]# curl 10.0.0.221

It works!

5、重启容器后需要再次指定:pipework br0 testduliip  172.16.146.113/24@172.16.146.1

pipework br0 testduliip01  172.16.146.112/24@172.16.146.1

七、 Docker跨主机通信之macvlan

创建网络[root@docker01 ~]# docker network  create --driver macvlan  --subnet 10.1.0.0/24 --gateway 10.1.0.254 -o parent=eth0  macvlan_1

33a1f41dcc074f91b5bd45e7dfedabfb2b8ec82db16542f05213839a119b62ca

设置网卡为混杂模式ip link set eth0 promisc on

创建使用macvlan网络容器[root@docker02 ~]# docker run  -it --network macvlan_1  --ip=10.1.0.222 busybox /bin/sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值