Docker网络

Docker网络

5种网络工作方式

1.Bridge
2.Host
3.None
4.Container
5.高级自定义网络(bridge,overlay,macvlan)

Bridge方式

该模式是创建容器时默认连接模式,会为每一个容器分配一个IP地址,并连接到docker0虚拟网桥上。相当于Vmware中的Nat模式。通过docker0网桥以及Iptables nat表配置与宿主机通信。
(1) Docker Daemon 利用 veth pair 技术,在宿主机上创建两个虚拟网络接口设备,假设为
veth0 和 veth1。而 veth pair 技术的特性可以保证无论哪一个 veth 接收到网络报文,都会将
报文传输给另一方。
(2) Docker Daemon 将 veth0 附加到 Docker Daemon 创建的 docker0 网桥上。保证宿主机的网络报文可以发往 veth0;
(3) Docker Daemon 将 veth1 添加到 Docker Container 所属的 namespace 下,并被改名为 eth0。
如此一来,保证宿主机的网络报文若发往 veth0,则立即会被 eth0 接收,实现宿主机到
Docker Container 网络的联通性;同时,也保证 Docker Container 单独使用 eth0,实现容器网
络环境的隔离性。

Host方式

容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。相当于Vmware中的桥接模式。

none方式

none模式是指禁用网络功能,只有lo接口,在容器创建时使用–network=none指定.网络环境为 none,即不为 Docker Container 任何的网络环境。一旦 Docker Container 采用了none网络模式,那么容器内部就只能使用 loopback 网络设备,不会再有其他的网络资源。

Container方式

Container 网络模式是 Docker 中一种较为特别的网络的模式。
在容器创建时使用-net container:vm1指定。(vm1指定的是运行的容器名)

自定义

bridge驱动类似默认的bridge网络模式。
overlay和macvlan是用于创建跨主机网络。
建议使用自定义的网络来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。

#以下命令也可以写成以下格式:
[root@server1 ~]# docker network create --driver bridge my_net1
[root@server1 ~]# docker network create my_net1
[root@server1 ~]# docker network ls
[root@wck ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
62bd543861f2   bridge    bridge    local
54bbcb25c19d   host      host      local
2fa7427e2401   my_net1   bridge    local
2700cbdf7681   none      null      local

也可以自定义网段:

[root@server1 ~]# docker network create --subnet=172.21.0.0/24 --gateway=172.21.0.1 my_net2
[root@server1 ~]# docker network ls

让后创建一个私有IP的容器,并加入该网络

[root@server1 ~]# docker run -it --name vm3 --network=my_net2 --ip=172.21.0.100  ubuntu
root@0f6d07ab74f1:/# ip a

不同网桥之前的通信:
把需要通信的容器增加连接到另一个网桥上

#给容器添加网卡后可以连接不同网络
[root@server1 ~]# docker network connect my_net2 vm1

进入容器会发现多看一块网卡
总结:
1.docker的bridge自定义网络(自定义网络中的网桥)间可以随便添加对方的网卡
2.docker的bridge自定义网络与系统自带的网桥自己间:只能是系统自带的网桥对应的容器添加给自定义的网桥间,而反过来会报错
3.docker的系统自带的网桥之间时可以互相通信的,因为在同一个网络桥接上

容器访问外网和外网访问容器

通过iptables的SNAT实现的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OPS_akai

奥利给

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值