Docker网络
  DcpJeOZ6VzTX 2023年11月13日 12 0

Docker网络类型

Bridge网桥

类似VMware的 NAT

Bridge:Docker设计的NAT网络模型 默认类型

Docker网络_Node无网络模式

# 查看Docker网络类型方式
[root@web03 wordpress]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8fbce4827412   bridge    bridge    local
b531f4a5032a   host      host      local
b1ffcfc86a8d   none      null      local

# 详细信息
[root@docker01 ~]# docker network inspect bridge
"Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]

# 拉一个网络工具的镜像busybox
[root@docker01 ~]# docker pull busybox


# 启容器
[root@docker01 ~]# docker run -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:04  
          inet addr:172.17.0.4  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 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:586 (586.0 B)  TX bytes:0 (0.0 B)

[root@docker01 ~]# docker run -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:05  
          inet addr:172.17.0.5  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 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:656 (656.0 B)  TX bytes:0 (0.0 B)

-#在开个终端,起一个容器ping 172.17.0.4可以通信,另一个容器也可以ping 172.17.0.5通
但是docker跨机器不能通信(要结合K8S才可以)。同一个机器,不同容器可以。
修改网桥IP
方法一:修改docker的启动脚本(不推荐)
# 修改docker的启动脚本
[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --bip=192.168.10.1/24

# 重新加载启动脚本
[root@docker01 ~]# systemctl daemon-reload
# 重启docker
[root@docker01 ~]# systemctl restart docker

# 查看一下
[root@docker01 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.10.1  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::42:90ff:fe18:e464  prefixlen 64  scopeid 0x20<link>
        ether 02:42:90:18:e4:64  txqueuelen 0  (Ethernet)
        RX packets 156350  bytes 16301152 (15.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 197805  bytes 336556400 (320.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# 开俩终端,分别起一个容器看ip变没变且能不能互相通信
[root@docker01 ~]# docker run -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:0A:02  
          inet addr:192.168.10.2  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 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:516 (516.0 B)  TX bytes:0 (0.0 B)

/ # ping 192.168.10.3
PING 192.168.10.3 (192.168.10.3): 56 data bytes
64 bytes from 192.168.10.3: seq=0 ttl=64 time=0.068 ms
64 bytes from 192.168.10.3: seq=1 ttl=64 time=0.138 ms
^C
--- 192.168.10.3 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.068/0.103/0.138 ms


[root@docker01 ~]# docker run -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:0A:03  
          inet addr:192.168.10.3  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 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:516 (516.0 B)  TX bytes:0 (0.0 B)

/ # ping 192.168.10.2
PING 192.168.10.2 (192.168.10.2): 56 data bytes
64 bytes from 192.168.10.2: seq=0 ttl=64 time=0.491 ms
64 bytes from 192.168.10.2: seq=1 ttl=64 time=0.077 ms
^C
--- 192.168.10.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.077/0.284/0.491 ms
方法二:修改docker配置文件
# 修改docker配置文件
[root@docker01 ~]# vim /etc/docker/daemon.json

{
  "bip": "10.0.1.1/24",  ##把这一行加到配置文件里
  "registry-mirrors": ["https://exjugyyn.mirror.aliyuncs.com"]
}

# 重启docker
[root@docker01 ~]# systemctl restart docker

# 开俩终端,分别起一个容器看ip变没变且能不能互相通信
-1#[root@docker01 ~]# docker run -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:00:01:02  
          inet addr:10.0.1.2  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 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:656 (656.0 B)  TX bytes:0 (0.0 B)

/ # ping 10.0.1.3
PING 10.0.1.3 (10.0.1.3): 56 data bytes
64 bytes from 10.0.1.3: seq=0 ttl=64 time=0.067 ms
64 bytes from 10.0.1.3: seq=1 ttl=64 time=0.087 ms
^C
--- 10.0.1.3 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.067/0.077/0.087 ms

-2#[root@docker01 ~]# docker run -it busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:00:01:03  
          inet addr:10.0.1.3  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 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:516 (516.0 B)  TX bytes:0 (0.0 B)

/ # ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2): 56 data bytes
64 bytes from 10.0.1.2: seq=0 ttl=64 time=0.051 ms
64 bytes from 10.0.1.2: seq=1 ttl=64 time=0.186 ms
^C
--- 10.0.1.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.051/0.118/0.186 ms

Host

性能最好,但不支持端口映射

Docker网络_Node无网络模式_02

Host:--network=host/--network host

# 起个busybox容器查看网卡信息
[root@docker01 ~]# docker run -it --network=host busybox /bin/sh
/ # ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:90:18:E4:64  
          inet addr:10.0.1.1  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::42:90ff:fe18:e464/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:156374 errors:0 dropped:0 overruns:0 frame:0
          TX packets:197827 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:16302832 (15.5 MiB)  TX bytes:336558780 (320.9 MiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:E0:5D:A4  
          inet addr:10.0.0.101  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fee0:5da4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1361439 errors:0 dropped:0 overruns:0 frame:0
          TX packets:748055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1678280956 (1.5 GiB)  TX bytes:513319815 (489.5 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:E0:5D:AE  
          inet addr:172.16.1.101  Bcast:172.16.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fee0:5dae/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47016 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25777 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:66818983 (63.7 MiB)  TX bytes:62109237 (59.2 MiB)

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:188 errors:0 dropped:0 overruns:0 frame:0
          TX packets:188 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:11276 (11.0 KiB)  TX bytes:11276 (11.0 KiB)

veth5cf09c6 Link encap:Ethernet  HWaddr E6:FA:F8:7E:D8:4A  
          inet6 addr: fe80::e4fa:f8ff:fe7e:d84a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2128 (2.0 KiB)  TX bytes:3274 (3.1 KiB)
          
# 测试-起个nginx容器
[root@docker01 ~]# docker run --network host -d nginx:alpine

#宿主机没做端口映射,也可以curl出来
[root@docker01 ~]# curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Container(K8S使用的模式)

容器之间共享同一个网络

Docker网络_Host_03

先开一个终端起一个容器
再次开一个终端,起容器是指定要共享IP的容器的id
# 先开一个终端起一个容器
[root@docker01 ~]# docker run -it centos:7 /bin/bash
[root@c045e6e7130f /]# hostname -I
10.0.1.3 

# 再次开一个终端,起容器是指定要共享IP的容器的id (起了一个nginx)
[root@docker01 ~]# docker run --network=container:c045e6e7130f -d nginx:alpine
201d1b65cf3640f1a0787ef65f1cdec7b72681de6e091f0de717fb862dbf3fa4
[root@docker01 ~]# docker exec -it 201d1b65cf364 /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:00:01:03  
          inet addr:10.0.1.3  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 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:656 (656.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  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)

# 测试另一个终端的容器能不能curl
[root@c045e6e7130f /]# curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

None无网络模式

谁都不能访问,谁也都访问不了

完全隔离

Docker网络_Host_04

# 无网络模式起个容器
[root@docker01 ~]# docker run -it --network none busybox /bin/sh
/ # ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  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)

/ #

自定义网络模式

以上4种模式都是docker自带的网络模式,docker还有一种叫做 自定义网络模式

Docker网络_Host_05

自定义网络模板:docker network create -d <mode> --subnet <CIDR> --gateway <网关> <自定义网路名称>
# 创建自定义网络
[root@docker01 ~]# docker network create -d bridge --subnet 192.168.20.0/24 --gateway 192.168.20.1 Shanghai
5fc00191af83d634d97a4fc837e870a26c92fb16a2abb97cd4ad8d64d192846c
[root@docker01 ~]# docker network ls
NETWORK ID     NAME       DRIVER    SCOPE
5fc00191af83   Shanghai   bridge    local
ebf1a3c74330   bridge     bridge    local
b7e0e168ad82   host       host      local
7ee05c9b14bc   none       null      local

-#查看网卡信息
[root@docker01 ~]# ifconfig
br-5fc00191af83: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.20.1  netmask 255.255.255.0  broadcast 192.168.20.255
        ether 02:42:27:69:c8:13  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 10.0.1.1  netmask 255.255.255.0  broadcast 10.0.1.255
        inet6 fe80::42:90ff:fe18:e464  prefixlen 64  scopeid 0x20<link>
        ether 02:42:90:18:e4:64  txqueuelen 0  (Ethernet)
        RX packets 156374  bytes 16302832 (15.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 197827  bytes 336558780 (320.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
# 引用自定义网络
[root@docker01 ~]# docker run -it --network Shanghai busybox /bin/sh

-#查看网卡信息
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:14:02  
          inet addr:192.168.20.2  Bcast:192.168.20.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11 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:962 (962.0 B)  TX bytes:0 (0.0 B)

## VPC网络
# 在开一个终端起容器,看能不能通信
[root@docker01 ~]# docker run -it --network Shanghai busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:14:02  
          inet addr:192.168.20.2  Bcast:192.168.20.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11 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:962 (962.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  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)

/ # ping 192.168.20.3
PING 192.168.20.3 (192.168.20.3): 56 data bytes
64 bytes from 192.168.20.3: seq=0 ttl=64 time=0.059 ms
64 bytes from 192.168.20.3: seq=1 ttl=64 time=0.094 ms
^C
--- 192.168.20.3 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.059/0.076/0.094 ms



[root@docker01 ~]# docker run -it --network Shanghai busybox /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:14:03  
          inet addr:192.168.20.3  Bcast:192.168.20.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 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:656 (656.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  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)

/ # ping 192.168.20.2
PING 192.168.20.2 (192.168.20.2): 56 data bytes
64 bytes from 192.168.20.2: seq=0 ttl=64 time=0.167 ms
64 bytes from 192.168.20.2: seq=1 ttl=64 time=0.116 ms
^C
--- 192.168.20.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.116/0.141/0.167 ms


同一个项目放同一个网段,相当于做网络隔离
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Harbor 下一篇: DNS解析流程概述
  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论