docker学习(四)docker容器的网络连接

docker容器的网络基础

查看运行docker守护进程机器上的网络设备

json@json:~$ ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:57:df:ca:cb
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

enp5s0    Link encap:Ethernet  HWaddr 28:d2:44:17:82:58
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:654 errors:0 dropped:0 overruns:0 frame:0
          TX packets:654 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:58600 (58.6 KB)  TX bytes:58600 (58.6 KB)

wlp4s0    Link encap:Ethernet  HWaddr 24:fd:52:63:a8:a8
          inet addr:192.168.1.119  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::dc67:d0a0:6619:994/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:45902 errors:0 dropped:0 overruns:0 frame:23765
          TX packets:19165 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:35513178 (35.5 MB)  TX bytes:2647874 (2.6 MB)
          Interrupt:17

docker0 的网络设备

docker的守护进程就是通过docker0为docker的容器提供网络连接的各种服务
docker0实际上就是linux的虚拟网桥

网桥

根据OSI的七层模型中,网桥是使数据链路层的设备。它用来通过网络设备的物理地址来对网络进行划分并且传递数据。

Linux虚拟网桥的特点

1.可以设计IP地址
2.相当于拥有一个隐藏的虚拟网卡

docker0默认地址划分

Ip:172.17.42.1 子网掩码:255.255.0.0
MAC:02:42:ac:11:00:00 到 02:42:ac:11:ff:ff
总共提供了65534个地址

docker在容器启动时实际上要创建两端,一端在容器上,而另一端是运行在运行docker容器的主机上。

查看网桥:

1.安装网桥管理工具

sudo apt-get install bridge-utils

2.查看网桥设备

sudo brctl show

3.运行一个容器
4.查看容器的IP

ifconfig

5.查看网桥设备

sudo brctl show

这时在docker0后面的interfaces中多了一个参数,这就是docker在容器创建时,为容器连接docker0 所创建的一个网络接口。
同样使用 ifconfig命令也可以查到这个网络接口

修改docker0默认ip范围

当docker0提供的默认IP地址范围,不能满足我们希望为容器分配的IP地址时可以通过linux自带的修改docker0地址

$sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0

使用自定义虚拟网桥

1.添加虚拟网桥

a.添加网桥:$sudo brctl addbr bro
b.设置ip和子网掩码:$sudo ifconfig br0 192.168.100.1 netmask 255.255.255.0

2.更改docker守护进程的启动配置

修改/etc/default/docker 中添加DOCKER_OPS值    -b=br0
$sudo vim /etc/default/docker

后面追加

DOCKER_OPS="-b=br0"

3.重启docker

$sudo service docker restart

4.查看设置是否成功

$ps -ef | grep docker
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容