1、内容概要
11、linux网络原理
2
32、docker网络
4
53、多个容器互联项目(nginx代理django)
2、Linux网络原理
1docker网络严重依赖于linux网络
2
3容器之间相互隔离
4
5为了支持网络协议栈的多实例,linux提供了一个网络名称空间(Network Namespace)。不同的网络名称完全隔离。
6
7容器之间的网络互通问题?
8
9实现两个不同的网络名称空间互联的方式
101、veth设备对
11 veth设备必须是成对出现。
12
13 1、创建名称空间
14 [root@localhost ~]
15
16
17 [root@localhost ~]
18 test01
19
20 2、创建veth设备对
21 [root@localhost ~]
22
23 [root@localhost ~]
24 3、绑定名称空间
25 [root@localhost ~]
26
27 [root@localhost ~]
28
29 [root@localhost ~]
30
31
32
33 4、分配IP
34 [root@localhost ~]
35 [root@localhost ~]
36
37
38 5、重启
39 [root@localhost ~]
40 [root@localhost ~]
41
42 [root@localhost ~]
43 [root@localhost ~]
44
45 6、测试
46 [root@localhost ~]
47
482、网桥
49
503、iptables
51
524、ipvs
3、docker网络
1就是为了实现容器互联的。
2
31、host模式
4 将容器网络绑定到宿主主机上。也就是说宿主主机上的网络直接绑定到容器内。
5 [root@localhost ~]
6 这时我们可以通过192.168.15.100直接访问到容器里面的nginx
7
82、container模式
9 先创建一个容器
10 [root@localhost ~]
11
12 共享一个容器的网络。
13 [root@localhost ~]
14
15 这时我们进入到centos容器中可以访问到共享容器中的nginx
16 [root@localhost ~]
17 [root@8c28f7ec62e7 /]
18
193、网桥模式
20
21 1、创建网桥
22 [root@localhost ~]
23
24
25 [root@localhost ~]
26
27 2、使用网桥
28
29 首先先在网桥中创建一个容器
30 [root@localhost ~]
31
32 在创建另一个容器
33 [root@localhost ~]
34
35 这时我们在centos容器中可以通过id访问到其他容器中的nginx
36 [root@e8b0bc58189a /]
37
38 如果想要使用名字访问的话必须指定name
39 [root@localhost ~]
40 --name 指定容器名称,将容器名称加入到docker DNS
41
42 [root@e8b0bc58189a /]
43
44
454、none模式
46 这种模式只提供一个回环网络
47 [root@localhost ~]
48
495、--link
50 链接一个容器,类似于container模式
51 [root@localhost ~]
52 [root@localhost ~]
53 [root@localhost ~]
54
55
4、docker的network
11、创建网桥
2--subnet :指定网络的CIDR
3--gateway :网关
4[root@localhost ~]
5[root@localhost ~]
6网关相同,在同一网络段
7
82、查看网桥
9[root@localhost ~]
10NETWORK ID NAME DRIVER SCOPE
11网桥的ID 网桥的名称 网桥类型 网桥的来源
12
133、查看网桥的详细信息
14docker network inspect [网桥的名称]
15
164、链接网桥
17
18
19[root@localhost ~]
20
21[root@localhost ~]
22
23[root@localhost ~]
24[root@localhost ~]
25
265、断开链接
27[root@localhost ~]
28
296、删除网桥
30docker network rm [网桥名称]
31[root@localhost ~]
32
337、清理网桥
34[root@localhost ~]
5、案例
11、分析
2
3Nginx ---> Django
4
5 1、创建网桥
6 docker network create chenyang3
7
8 2、部署Django
9 [root@localhost ~]
10 2d2d77726f5fadd22472527116300a7ab5bb43c660c7663d7843b2fa0f0afffb
11
12 [root@localhost ~]
13 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14 2d2d77726f5f python:3.6 "bash" 3 seconds ago Up 2 seconds stoic_mcnulty
15
16 [root@localhost ~]
17 root@2d2d77726f5f:/
18 root@2d2d77726f5f:/
19
20 [root@localhost ~]
21 [root@localhost ~]
22
23 3、nginx
24
25vim django.conf
26server {
27 server_name _;
28 listen 80;
29 location / {
30 proxy_pass http://django:8000;
31 }
32}
33
34[root@localhost ~]