[toc]

Docker默认网络

Docker网络模式概述

Docker使用Linux桥接的方式,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。

Docker网络模式工作方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Docker自身的4种网络工作方式,和一些自定义网络模式.
Docker容器与容器之间网络相互隔离。
安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host.
你可以使用以下docker network ls命令列出这些网络:

[root@m01 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
daa11493364f bridge bridge local
fc5d4a69c90d host host local
16b8d6c8be22 none null local

Docker内置这三个网络,运行容器时,你可以使用该--network标志来指定容器应连接到哪些网络。
该bridge网络代表docker0所有Docker安装中存在的网络。除非你使用该docker run --network=<NETWORK>选项指定,否则Docker守护程序默认将容器连接到此网络。

我们在使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网络模式:

host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默认设置。
container模式:使用 --net=container:NAME_or_ID 指定。
Docker网络模型 配置 说明
host模式 –-network=host 容器和宿主机共享Network namespace。
container模式 –network=container:ID 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。
none模式 –network=none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式 –network=bridge 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。(默认为该模式

容器单向通信

让容器之间不使用ip即可通信

使用”link”选项让容器之间连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 下载busybox镜像
docker pull busybox

# 启动容器1并连接
docker run --name test -it busybox /bin/sh

# 启动容器2连接容器1
docker run --name=test3 --link test -it busybox /bin/sh
## --link:单向通信
/ # ping test
PING test (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.115 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.085 ms
64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.069 ms
64 bytes from 172.17.0.2: seq=3 ttl=64 time=0.059 ms
64 bytes from 172.17.0.2: seq=4 ttl=64 time=0.067 ms

示例:使用”link”将”wordpress”容器连接”MySQL”容器

1
2
3
4
5
6
7
8
9
10
11
12
13
# 启动数据库
docker run \
--name wordpress_db \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD='123' \
-e MYSQL_DATABASE='wordpress' \
-e MYSQL_USER='wp_user' \
-e MYSQL_PASSWORD='123' \
-v /db_data:/var/lib/mysql \
-d mysql:5.7

# 启动wordpress
docker run --name wp --link wordpress_db -p80:80 -d wordpress:v4

示例:docker启动zabbix(容器之间相互连接)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 启动mysql服务器容器
docker run \
--name zabbix_db \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD='123' \
-e MYSQL_DATABASE='zabbix' \
-e MYSQL_USER='zabbix' \
-e MYSQL_PASSWORD='zabbix' \
-v /zabbix_db:/var/lib/mysql \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin

# 启动zabbix-server服务容器
docker run \
--name zabbix-server \
--link zabbix_db \
-p 10051:10051 \
-e MYSQL_DATABASE='zabbix' \
-e DB_SERVER_HOST="zabbix_db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-d zabbix/zabbix-server-mysql

# 启动zabbix-frontend前端代码容器
docker run \
--name zabbix-web \
--link zabbix-server \
--link zabbix_db \
-p 80:8080 \
-p 443:8443 \
-e DB_SERVER_HOST="zabbix_db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-d zabbix/zabbix-web-nginx-mysql

Docker默认三种网络模式详述

桥接模式(Bridge)

相当于Vmware中的Nat模式,容器使用独立network Namespace,并连接到docker0虚拟网卡(默认模式)。通过docker0网桥以及Iptables nat表配置与宿主机通信;bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。

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

  • 实现原理:
    • 通过一个虚拟网桥,建立一个统一的网络名称空间,依赖于docker0网桥
  • 使用及使用场景
    • 一般使用在多个容器之间互联互通
  • 使用特点
    • 多个容器之间互联互通
    • 为容器提供一个统一的网络环境

img

1
2
3
4
5
6
7
8
9
10
11
12
# 查看所有docker网络模式
docker network ls
NETWORK ID NAME DRIVER SCOPE
2154e9bd8223 bridge bridge local
19bc9cb412ac host host local
7e02e5fd429d none null local

# 查看bridge详细信息
docker inspect bridge
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
## 容器通过172.17.0.1网卡(宿主机docker0)进行上网

修改启动脚本修改网桥IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 编辑docker的启动脚本
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
--bip=192.168.1.1/24

# 重启docker服务
systemctl daemon-reload
systemctl restart docker

# 查看docker网卡
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::42:bcff:fe07:9cfc prefixlen 64 scopeid 0x20<link>
ether 02:42:bc:07:9c:fc txqueuelen 0 (Ethernet)
RX packets 273121 bytes 45275719 (43.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 398786 bytes 768173681 (732.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

修改配置文件修改网桥IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 编辑docker的配置文件(json格式)
vim /etc/docker/daemon.json
{
"bip":"10.1.1.1/24",
"registry-mirrors": ["https://pgz00k39.mirror.aliyuncs.com"]
}

# 重启docker服务
systemctl restart docker

# 查看docker网卡
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:bcff:fe07:9cfc prefixlen 64 scopeid 0x20<link>
ether 02:42:bc:07:9c:fc txqueuelen 0 (Ethernet)
RX packets 273115 bytes 45275503 (43.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 398780 bytes 768173377 (732.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

主机模式(host)

相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

Host:与宿主机共享Network Namespace,–network=host 性能最高

  • 解释:
    • host模式主要用于跟宿主主机相连,此时docker容器不会虚拟出自己的网卡。
  • 优点:
    1. 共享宿主主机网络,无需再做网络转发
    2. 性能比较好
  • 缺点:
    1. 隔离性不强
    2. 容易跟宿主主机服务之间起冲突(端口冲突)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 启动的时指定"--network host"
docker run -it --network=host busybox /bin/sh

# 在容器内查看网卡信息(不会生成虚拟网卡)
/ # ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:BC:07:9C:FC
inet addr:10.1.1.1 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::42:bcff:fe07:9cfc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:273121 errors:0 dropped:0 overruns:0 frame:0
TX packets:398786 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:45275719 (43.1 MiB) TX bytes:768173681 (732.5 MiB)

eth0 Link encap:Ethernet HWaddr 00:0C:29:A8:0A:B6
inet addr:10.0.0.81 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::4cb7:9974:9892:56d8/64 Scope:Link
inet6 addr: fe80::d007:54f5:fd7a:ef6a/64 Scope:Link
inet6 addr: fe80::a7:8d0:fa05:ebc8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
....

image-20230601213707712

容器模式(container)

这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

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

  • 解释:
    • 一个容器将网络共享给另外一个容器使用(两个容器之间网络其实是一个网络,共用一块儿网卡)

img

image-20230601222002739

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# 启动的时指定"--network=container"
docker run -it --network=container:9dbc3b24fd1d nginx:alpine

# 先启动一个主容器
docker run -it centos:7 /bin/bash

# 使用container模式启动一个nginx
docker run -it --network=container:9dbc3b24fd1d nginx:alpine

# 使用container模式启动一个busybox
docker run -it --network=container:9dbc3b24fd1d busybox /bin/sh

# 查看容器当前网卡
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:0A:01:01:03
inet addr:10.1.1.3 Bcast:10.1.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:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2066 (2.0 KiB) TX bytes:2066 (2.0 KiB)

# busybox容器查看当前IP
[root@9dbc3b24fd1d /]# hostname -I
10.1.1.3

# busybox容器访问nginx容器的web页面
[root@9dbc3b24fd1d /]# 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)

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

None:容器不配置任何网络功能,–network=none

  • 解释:
    • none模式只为容器提供一个lo回环网络,外界是无法与容器进行互联互通。
  • 优点:
    • 安全
  • 缺点:
    • 无法与外界进行网络互通

image-20230601213754896

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 启动的时指定"--network=none"
docker run -it --network=none busybox /bin/sh

# 启动一个容器
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)

Docker自定义网路模式

除了以上得四种网络我们也可以创建自定义网络

image-20230601213807259

自定义网络介绍

建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。Docker提供了创建这些网络的默认网络驱动程序,你可以创建一个新的Bridge网络,Overlay或Macvlan网络。你还可以创建一个网络插件或远程网络进行完整的自定义和控制。

你可以根据需要创建任意数量的网络,并且可以在任何给定时间将容器连接到这些网络中的零个或多个网络。此外,您可以连接并断开网络中的运行容器,而无需重新启动容器。当容器连接到多个网络时,其外部连接通过第一个非内部网络以词法顺序提供。

#也就是一句话 自定义网络模式 就是启动容器时 知道自己创建得网络模式 容器与容器之间就可以通信了

自定义网络操作语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 语法格式:
docker network [cmd]

# 查看网桥列表
docker network ls
NETWORK ID NAME DRIVER SCOPE
a985cfca04ae bridge bridge local
a425f4733836 host host local
5902bdedd1b1 lnmd bridge local
ce7e9b514c2a none null local

# 自定义网络名称
docker network create -d <mode>--subnet<CIDR> --gateway <网关> <自定义网络名称>

# 引用自定义网络
docker run --network <自定义网络名称> <镜像名称>

# 删除自定义网络


# 创建实例
docker network create -d bridge --subnet 192.168.100.0/24 --gateway 192.168.100.1 name

# 查看信息


# 启动容器时,指定--name即可通过主机名ping通


# 阿里云划分网络方式
VPC(不同网段)

示例:模拟创建自定义网络环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# 创建自定义网络(wangzhe)
docker network create -d bridge --subnet 192.168.10.0/24 --gateway 192.168.10.1 wangzhe

# 查看当前网桥
docker network ls
NETWORK ID NAME DRIVER SCOPE
553146c9dbeb bridge bridge local
19bc9cb412ac host host local
7e02e5fd429d none null local
c7c39fb300be wangzhe bridge local

# 创建自定义网络(lol)
docker network create -d bridge --subnet 192.168.100.0/24 --gateway 192.168.100.1 lol

# 查看当前网桥
docker network ls
NETWORK ID NAME DRIVER SCOPE
553146c9dbeb bridge bridge local
19bc9cb412ac host host local
5d4bf27f621e lol bridge local
7e02e5fd429d none null local
c7c39fb300be wangzhe bridge local

# 将主机加入"wangzhe"网段
docker run --name wangzhe1 -it --network=wangzhe busybox /bin/sh

# 查看"wangzhe1"网卡
/ # 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: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 wangzhe2
PING wangzhe2 (192.168.10.3): 56 data bytes
64 bytes from 192.168.10.3: seq=0 ttl=64 time=0.072 ms
64 bytes from 192.168.10.3: seq=1 ttl=64 time=0.111 ms
64 bytes from 192.168.10.3: seq=2 ttl=64 time=0.109 ms
64 bytes from 192.168.10.3: seq=3 ttl=64 time=0.073 ms
64 bytes from 192.168.10.3: seq=4 ttl=64 time=5.863 ms

# 运行"wangzhe2"容器并指定"wangzhe"网络
docker run --name wangzhe2 -it --network=wangzhe busybox /bin/sh

# 检查网络连通性
/ # ping wangzhe1
PING wangzhe1 (192.168.10.2): 56 data bytes
64 bytes from 192.168.10.2: seq=0 ttl=64 time=0.048 ms
64 bytes from 192.168.10.2: seq=1 ttl=64 time=0.106 ms
64 bytes from 192.168.10.2: seq=2 ttl=64 time=0.306 ms
64 bytes from 192.168.10.2: seq=3 ttl=64 time=0.100 ms
64 bytes from 192.168.10.2: seq=4 ttl=64 time=0.059 ms

# 将主机放入lol网段
docker run --name lol1 -it --network=lol busybox /bin/sh

# 查看网卡状态
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:C0:A8:64:02
inet addr:192.168.100.2 Bcast:192.168.100.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13 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:1102 (1.0 KiB) 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.10.1
PING 192.168.10.1 (192.168.10.1): 56 data bytes
64 bytes from 192.168.10.1: seq=0 ttl=64 time=0.116 ms
^C
--- 192.168.10.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.116/0.116/0.116 ms

/ # ping 192.168.10.2
PING 192.168.10.2 (192.168.10.2): 56 data bytes
^C
--- 192.168.10.2 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

/ # ping 192.168.10.3
PING 192.168.10.3 (192.168.10.3): 56 data bytes
^C
--- 192.168.10.3 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

/ # ping 192.168.100.3
PING 192.168.100.3 (192.168.100.3): 56 data bytes
64 bytes from 192.168.100.3: seq=0 ttl=64 time=0.086 ms
64 bytes from 192.168.100.3: seq=1 ttl=64 time=0.251 ms
64 bytes from 192.168.100.3: seq=2 ttl=64 time=0.067 ms
64 bytes from 192.168.100.3: seq=3 ttl=64 time=0.100 ms
64 bytes from 192.168.100.3: seq=4 ttl=64 time=0.106 ms
^C
--- 192.168.100.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.067/0.122/0.251 ms

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

/ # ping wangzhe1
ping: bad address 'wangzhe1'
docker run --name lol2 -it --network=lol busybox /bin/sh

/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:C0:A8:64:03
inet addr:192.168.100.3 Bcast:192.168.100.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)
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)

# 宿主机网卡信息
ifconfig
br-5d4bf27f621e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::42:24ff:fe93:7184 prefixlen 64 scopeid 0x20<link>
ether 02:42:24:93:71:84 txqueuelen 0 (Ethernet)
RX packets 13 bytes 1106 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21 bytes 1762 (1.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

br-c7c39fb300be: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.1 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::42:2aff:fe50:4ac8 prefixlen 64 scopeid 0x20<link>
ether 02:42:2a:50:4a:c8 txqueuelen 0 (Ethernet)
RX packets 13 bytes 1106 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21 bytes 1762 (1.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

示例:

1.wordpress和mysql启动在同一个网段中
2.zabbix和mysql也启动在同一个网段中

1
2
3
4
wordpress 和 zabbix 共用一个MySQL
# 库不同
wordpress
zabbix