1、网络模式
网络模式 | 配置 | 说明 |
---|---|---|
bridge模式 | --net=bridge | 默认值,在Docker网桥docker0上为容器创建新的网络栈 |
none模式 | --net=none | 不配置网络,用户可以稍后进入容器,自行配置 |
container模式 | --net=container:name/id | 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace |
host模式 | --net=host | 容器和宿主机共享Network namespace |
用户自定义 | --net=自定义网络 | 用户自己使用network相关命令定义网络,创建容器的时候可以指定为自己定义的网络 |
2、docker每个都有一个ip地址
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --name tomcat1 tomcat:8
Unable to findimage 'tomcat:8'locally
8: Pulling from library/tomcat
90fe46dd8199: Pull complete
35a4f1977689: Pull complete
bbc37f14aded: Pull complete
74e27dc593d4: Pull complete
93a01fbfad7f: Pull complete
1478df405869: Pull complete
64f0dd11682b: Pull complete
68ff4e050d11: Pull complete
9a696f0d2c22: Pull complete
44fdefb02938: Pull complete
Digest: sha256:140ebee3a8ad23065abee46539900c69dc4d90a1ff4b41f2396e38968e05e82b
Status: Downloaded newer image fortomcat:8
cb2139eeaec4da409626b2192faf7d43bb3d326597d7b1fd6ca5d9385e14bc3a
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat1 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
112: eth0@if113: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# ping 172.18.0.2
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
64bytes from 172.18.0.2: icmp_seq=1ttl=64time=0.064 ms
64bytes from 172.18.0.2: icmp_seq=2ttl=64time=0.066 ms
64bytes from 172.18.0.2: icmp_seq=3ttl=64time=0.055 ms
64bytes from 172.18.0.2: icmp_seq=4ttl=64time=0.056 ms
3、docker桥接网络
Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。
Linux虚拟网络技术
Docker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair);
Docker中的网络接口默认都是虚拟的接口。虚拟接口的优势就是转发效率极高(因为Linux是在内核中进行数据的复制来实现虚拟接口之间的数据转发,无需通过外部的网络设备交换),对于本地系统和容器系统来说,虚拟接口跟一个正常的以太网卡相比并没有区别,只是他的速度快很多。
4、查看本机网络(本机有三个网络)
# lo:127.0.0.1
# eth0:172.17.119.96 阿里云私有ip;内网可以互通,访问不要流量,省流量。
# docker0:172.18.0.1
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:0a:07:ba brd ff:ff:ff:ff:ff:ff
inet 172.17.119.96/20 brd 172.17.127.255 scope global dynamic eth0
valid_lft 315025394sec preferred_lft 315025394sec
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500qdisc noqueue state DOWN group default
link/ether 02:42:f1:f3:d2:be brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
valid_lft forever preferred_lft forever
5、网络的创建过程
Docker创建一个容器的时候,会具体执行以下操作:
创建一对虚拟接口,分别放到本地主机和新容器的命名空间中
本地主机一段的虚拟接口连接到默认的docker0网桥或者指定网桥上,并具有一个以veth开头的唯一名字
容器一段的虚拟接口将放到新创建的容器中,并修改名字为eth0。这个接口只在容器的命名空间可见
从网桥的可用地址段中获取一个空闲的地址分配给容器的eth0(如:172.18.0.1/16),并配置默认路由网关为docker0网卡的内部接口docker0的IP地址
完成以上,容器就可以使用它所能看到的eth0虚拟网卡来连接其他容器和访问外部网络。
6、默认在docker0网络下,docker容器之间不能相互访问
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
efe07891e348 tomcat:8 "catalina.sh run" 12minutes ago Up 12minutes 0.0.0.0:32770->8080/tcp tomcat2
cb2139eeaec4 tomcat:8 "catalina.sh run" 24minutes ago Up 24minutes 0.0.0.0:32768->8080/tcp tomcat
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat ping tomcat2
ping: tomcat2: Name or servicenot known
7、容器之间只能ping通自己
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --hostname tomcat1 --name tomcat1 tomcat:8
63821ec9194e540d2b162d64c05851b2216ffa0acd2c8de3da4e0427df7b6c9a
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --hostname tomcat2 --name tomcat2 tomcat:8
74d3a2b65539e0b8e372da81b9c5ddd516ced07c948887ef6fc9f56da95f659d
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat1 ping tomcat2
ping: tomcat2: Name or servicenot known
# 自己ping自己可以
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat1 ping tomcat1
PING tomcat1 (172.18.0.2) 56(84) bytes of data.
64bytes from tomcat1 (172.18.0.2): icmp_seq=1ttl=64time=0.045 ms
64bytes from tomcat1 (172.18.0.2): icmp_seq=2ttl=64time=0.048 ms
8、使用link
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -P -d --name tomcat3 --link tomcat2 tomcat:8
bb2f63e66d4ba7545c29c7957e79c5f31dc922ff8138b6a31ec5b663722c4927
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat3 ping tomcat2
PING tomcat2 (172.18.0.3) 56(84) bytes of data.
64bytes from tomcat2 (172.18.0.3): icmp_seq=1ttl=64time=0.087 ms
64bytes from tomcat2 (172.18.0.3): icmp_seq=2ttl=64time=0.064 ms
64bytes from tomcat2 (172.18.0.3): icmp_seq=3ttl=64time=0.060 ms
# 只有tomcat3到tomcat2的方向是通的,反向ping不通
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat3 ping tomcat1
ping: tomcat1: Name or servicenot known
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat2 ping tomcat3
ping: tomcat3: Name or servicenot known
9、link原理是创建的时候他把ip绑定到了hosts
# 原理是创建的时候他把ip绑定到了hosts
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat3 cat /etc/hosts
127.0.0.1localhost
::1localhost ip6-localhost ip6-loopback
fe00::0ip6-localnet
ff00::0ip6-mcastprefix
ff02::1ip6-allnodes
ff02::2ip6-allrouters
172.18.0.3tomcat2 tomcat2 #自动绑定hosts
172.18.0.4bb2f63e66d4b
10、link的缺点(重新建创建docker容器之后,无法相互访问,强制把link文件删除)
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker stop tomcat2
tomcat2
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker rm tomcat2
tomcat2
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --hostname tomcat2 --name tomcat2 tomcat:8
95e728be43e6ea2abe5d8a4df2c6f830ce880e7ba08b8e232597e12500f5a23c
# tomcat3由于之前把tomcat2绑定了hosts,tomcat2销毁之后重启建立的,导致tomcat3系统直接崩溃了。
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat3 ping tomcat2
Error response from daemon: Cannot link to a non running container: /tomcat2 AS /tomcat3/tomcat2
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat3 cat /etc/hosts
Error response from daemon: Cannot link to a non running container: /tomcat2 AS /tomcat3/tomcat2
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker restart tomcat3
Error response from daemon: Cannot restartcontainer tomcat3: Cannot link to a non running container: /tomcat2 AS /tomcat3/tomcat2
11、docker容器可以支持的ip数量
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f92c1c2c4bf7 bridge bridge local
e6983a928f90 host host local
21e45a3c002b none null local
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network inspect f92c1c2c4bf7
[
{
"Name": "bridge",
"Id": "f92c1c2c4bf7f5b909637cded1301a513ac650f8eb5841504ed7619d7a0d5e66",
"Created": "2020-05-01T16:34:11.962547179+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16", #默认情况下可以开启六万多个ip
"Gateway": "172.18.0.1"
}
]
}
12、清空所有容器
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker rm -f $(docker ps -aq)
95e728be43e6
bb2f63e66d4b
63821ec9194e
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:0a:07:ba brd ff:ff:ff:ff:ff:ff
inet 172.17.119.96/20 brd 172.17.127.255 scope global dynamic eth0
valid_lft 315020766sec preferred_lft 315020766sec
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500qdisc noqueue state DOWN group default
link/ether 02:42:f1:f3:d2:be brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
valid_lft forever preferred_lft forever
13、自定义网络命令详解
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network create --help
Usage:docker network create [OPTIONS] NETWORK
Create a network
Options:
--attachable Enable manual container attachment
--aux-addressmap Auxiliary IPv4 or IPv6 addresses used by
Network driver (default map[])
--config-fromstring The network from which copying the configuration
--config-only Create a configuration only network
-d, --driverstring Driver to manage the Network (default "bridge")
--gatewaystrings IPv4 or IPv6 Gateway forthe master subnet
--ingress Create swarm routing-mesh network
--internal Restrict external access to the network
--ip-rangestrings Allocate container ip from a sub-range
--ipam-driverstring IP Address Management Driver (default "default")
--ipam-optmap Set IPAM driver specific options (default map[])
--ipv6 Enable IPv6 networking
--labellist Set metadata on a network
-o, --optmap Set driver specific options (default map[])
--scopestring Control the network's scope
--subnetstrings Subnet inCIDR format that represents a
network segment
14、bridge模式网络
Docker守护进程创建了一个虚拟以太网桥docker0
,附加在其上的任何网卡之间都能自动转发数据包。默认情况下,守护进程会创建一对对等接口,将其中一个接口设置为容器的eth0接口,另一个接口放置在宿主机的命名空间中,从而将宿主机上的所有容器都连接到这个内部网络上。同时,守护进程还会从网桥的私有地址空间中分配一个IP地址和子网给该容器。
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --net=bridge --hostname tomcat2 --name tomcat2 tomcat:8
27f3deb11ce1c4c2103c91a29799247bd5dbce9a1aceea4787cd826ee32bfe59
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
27f3deb11ce1 tomcat:8 "catalina.sh run" 29seconds ago Up 28seconds 0.0.0.0:32780->8080/tcp tomcat2
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat2 ping tomcat4
ping: tomcat4: Name or servicenot known
15、host模式
该模式将禁用Docker容器的网络隔离。因为容器共享了宿主机的网络命名空间,容器和宿主机具有相同的IP地址172.17.119.96
直接暴露在公共网络中。因此,你需要通过端口映射(port mapping)来进行协调。该模式比bridge模式更快(因为没有路由开销),但是它将容器直接暴露在公共网络中,是有安全隐患的。
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --name tomcat3 --net host tomcat:8
d4e9d230278c9a32b19069f0f63ce66766cf5943bc7c6121c148965177b3bfbe
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat3 ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:0a:07:ba brd ff:ff:ff:ff:ff:ff
inet 172.17.119.96/20 brd 172.17.127.255 scope global dynamic eth0
valid_lft 315019616sec preferred_lft 315019616sec
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc noqueue state UP group default
link/ether 02:42:f1:f3:d2:be brd ff:ff:ff:ff:ff:ff
inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
valid_lft forever preferred_lft forever
129: vethcc0922d@if128: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc noqueue master docker0 state UP group default
link/ether a2:45:72:a8:0d:84 brd ff:ff:ff:ff:ff:ff link-netnsid 0
16、container模式(一般缓存使用,在同一台机器访问比较快)
在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。
# 相当于和tomcat1公用同一个ip同一个端口,导致端口冲突
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --net container:tomcat1 --name tomcat2 tomcat:8
docker: Error response from daemon: conflicting options: port publishing and the container type network mode.
See 'docker run --help'.
17、自定义桥接网络
自定义网络默认使用的是桥接网络“bridge”
1.创建桥接网络
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
e99e400ffce3e42db45ecf4bf84baf97b726067d157445b24c630b5ad7689477
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
f92c1c2c4bf7 bridge bridge local
e6983a928f90 host host local
e99e400ffce3 mynet bridge local
21e45a3c002b none null local
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network inspect mynet
[
{
"Name": "mynet",
"Id": "e99e400ffce3e42db45ecf4bf84baf97b726067d157445b24c630b5ad7689477",
"Created": "2020-05-03T15:31:32.617833011+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
2.创建容器
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --name tomcat-net-01 --net mynet tomcat:8
5490bfc5d4b92a8e816670d51604bc79292c9ed4a3c25218031370dd4f85a674
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --name tomcat-net-02 --net mynet tomcat:8
eb1b6b71c87e344c2d11c872d8374d74b4e3fa5129c7fade1a1bfb0ef8dc29ce
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb1b6b71c87e tomcat:8 "catalina.sh run" 7seconds ago Up 5seconds 0.0.0.0:32778->8080/tcp tomcat-net-02
5490bfc5d4b9 tomcat:8 "catalina.sh run" 19seconds ago Up 18seconds 0.0.0.0:32777->8080/tcp tomcat-net-01
3.自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat-net-02 ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
133: eth0@if134: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc noqueue state UP group default
link/ether 02:42:c0:a8:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.0.3/16 brd 192.168.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat-net-01 ping 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64bytes from 192.168.0.3: icmp_seq=1ttl=64time=0.105 ms
64bytes from 192.168.0.3: icmp_seq=2ttl=64time=0.065 ms
64bytes from 192.168.0.3: icmp_seq=3ttl=64time=0.064 ms
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat-net-01 ping tomcat-net-02
PING tomcat-net-02 (192.168.0.3) 56(84) bytes of data.
64bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=1ttl=64time=0.037 ms
64bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=2ttl=64time=0.062 ms
64bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=3ttl=64time=0.062 ms
4.指定ip
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker run -d -P --name tomcat-net-04 --ip 192.168.0.77 --net mynet tomcat:8
9be39c53162c188753c7986fc17e9792d3bf709f458be63e3d626e488e6cf6ea
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat-net-01 ping 192.168.0.77
PING 192.168.0.77 (192.168.0.77) 56(84) bytes of data.
64bytes from 192.168.0.77: icmp_seq=1ttl=64time=0.089 ms
64bytes from 192.168.0.77: icmp_seq=2ttl=64time=0.061 ms
18、打通mynet-docker0
1.不在同一网段,服务无法访问
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9be39c53162c tomcat:8 "catalina.sh run" 17minutes ago Up 17minutes 0.0.0.0:32779->8080/tcp tomcat-net-04
eb1b6b71c87e tomcat:8 "catalina.sh run" 27minutes ago Up 27minutes 0.0.0.0:32778->8080/tcp tomcat-net-02
5490bfc5d4b9 tomcat:8 "catalina.sh run" 27minutes ago Up 27minutes 0.0.0.0:32777->8080/tcp tomcat-net-01
d4e9d230278c tomcat:8 "catalina.sh run" 35minutes ago Up 35minutes tomcat3
cab9a4c1556a tomcat:8 "catalina.sh run" 45minutes ago Up 45minutes 0.0.0.0:32776->8080/tcp tomcat1
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat-net-01 ping tomcat3
ping: tomcat3: Name or servicenot known
2.将服务加入新建网络
# 将tomcat1添加到自己的新建的网络里面
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network connect mynet tomcat1
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network inspect mynet
"cab9a4c1556a7c5c4f91b71aa971aac47bedd8b8fadedfaafd13e3d41a8af994": {
"Name": "tomcat1",
"EndpointID": "1bf906eb112fd901e621c0a6077250ecde78a398b6babeded03ca2c05bcf0916",
"MacAddress": "02:42:c0:a8:00:04",
"IPv4Address": "192.168.0.4/16", # 多了一条地址
"IPv6Address": ""
},
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat1 ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
128: eth0@if129: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
137: eth1@if138: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc noqueue state UP group default # 新加了一块网卡
link/ether 02:42:c0:a8:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.0.4/16 brd 192.168.255.255 scope global eth1
valid_lft forever preferred_lft forever
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat-net-01 ping tomcat1
PING tomcat1 (192.168.0.4) 56(84) bytes of data.
64bytes from tomcat1.mynet (192.168.0.4): icmp_seq=1ttl=64time=0.082 ms
3.将服务退出新建网络
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker network disconnect mynet tomcat1
[root@iZ2zeir6vcnpz8qw3t455tZ ~]# docker exec -it tomcat-net-01 ping tomcat1
ping: tomcat1: Name or servicenot known
如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学运维知识。群主还经营一家Orchis饰品店,喜欢的小伙伴欢迎????前来下单。
扫描二维码
获取更多精彩
运维猫公众号
有需要技术交流的小伙伴可以加我微信,期待与大家共同成长,本人微信:
扫描二维码
添加私人微信
运维猫博主
扫码加微信
最近有一些星友咨询我知识星球的事,我也想继续在星球上发布更优质的内容供大家学习和探讨。运维猫公众号平台致力于为大家提供免费的学习资源,知识星球主要致力于即将入坑或者已经入坑的运维行业的小伙伴。
点击阅读原文 查看更多精彩内容!!!