
查看IP:
本地回环地址
阿里云内网地址
docker地址
测试
拉取一个Tomcat镜像
# 拉取docker pull tomcat# 运行[root@tl ~]# docker run -d -p 5000:8080 --name tomcat01 tomcat# 进入容器[root@tl ~]# docker exec -it tomcat01 bash
容器内输入ip addr
服务器Ping一下
我们每启动一个Docker容器。 docker就会给docker容器分配一个IP。 只要安装Docker就会有一个网卡为docker0
的侨接模式。 使用的技术是evth-pair技术。
再次测试ip addr


再多启动几个Tomcat容器


Docker0的Ip是 172.18.0.1 充当公用的一个路由器
所有容器不指定网络的情况下,都是docker0路由的。docker会给我们的容器分配一个默认可用的IP
容器互联link
问题
三个Tomcat容器

可以看到通过服务名称是ping不通的。
所以如何解决呢?
[root@tl ~]# docker run -it -d -P --name tomcat01 --link tomcat03 tomcat
创建一个tomcat01通过 —link关联已有的tomcat03

但是反向Ping, 失败了。
docker network ls

[root@tl ~]# docker network inspect d25f8ad3c3b3
[
{
"Name": "bridge",
"Id": "d25f8ad3c3b326b77c5767df69811e9a2db73486b35e767a074725aa0402b5c7",
"Created": "2020-09-04T10:40:58.197019647+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16", // 默认的IP Docker0
"Gateway": "172.18.0.1" // 网关
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
// 容器
"Containers": {
"4473d009e1f3fcc23c5164bf9c5b1c4975315f6bbf9b05c51442a0d7ffa723c4": {
"Name": "tomcat03", // Tomcat03
"EndpointID": "861bbd3557fd91619b12ca039124c0e31a93e04bf535099050c0f21178083eec",
"MacAddress": "02:42:ac:12:00:04",
"IPv4Address": "172.18.0.4/16",
"IPv6Address": ""
},
"7c061b6ec7e8763445063a4d0ebcbc2ab57f4e04a1a7d05989d9c160c079e545": {
"Name": "tomcat01", // Tomcat01
"EndpointID": "fee9be7792d99f607b6a91e65f4b4e9edcf6ee3d6a57893b2a9aa0e593145cf5",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
我们刚才通过tomcat01 绑定了 tomcat03。 
通过查看本地hosts文件。 发现直接有映射。
自定义网络
查看所有网路
docker network ls

网络模式
- bridge 桥接模式。
- host 主机模式,和宿主共享网络
- none 不配置网络
- container 容器内网络连通
测试
首先清除以前的容器
docker rm -f $(docker ps -aq)
创建容器
# 默认创建容器 --net bridge是默认添加的
docker run
-d
-p 5000:8080
--name tomcat01
--net bridge
tomcat
自定义网络
$ docker network create --help
Usage: docker network create [OPTIONS] NETWORK
Create a network
Options:
--attachable Enable manual container attachment
--aux-address map Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
--config-from string The network from which copying the configuration
--config-only Create a configuration only network
-d, --driver string Driver to manage the Network (默认 "bridge")
--gateway strings IPv4 or IPv6 Gateway for the master subnet
--ingress Create swarm routing-mesh network
--internal Restrict external access to the network
--ip-range strings Allocate container ip from a sub-range
--ipam-driver string IP Address Management Driver (default "default")
--ipam-opt map Set IPAM driver specific options (default map[])
--ipv6 Enable IPv6 networking
--label list Set metadata on a network
-o, --opt map Set driver specific options (default map[])
--scope string Control the network's scope
--subnet strings Subnet in CIDR format that represents a network segment
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

[root@tl ~]# docker network inspect mynet
[
{
"Name": "mynet",
"Id": "19e2a7bd09044a818e0816d4ecc800baac6849fe7cf58cddc6c1887e76eb2940",
"Created": "2020-09-04T11:43:00.5307361+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": {}
}
]
至此,自己的网络已经创建好了。
docker run -d -p 5000:8080 --name tomcat01 --net mynet tomcat

网络连通
➜ docker network --help
Usage: docker network COMMAND
Manage networks
Commands:
connect 连接一个容器到一个网络
create Create a network
disconnect Disconnect a container from a network
inspect Display detailed information on one or more networks
ls List networks
prune Remove all unused networks
rm Remove one or more networks
Run 'docker network COMMAND --help' for more information on a command.
docker network connect [容器ID]mynet [网络ID]
# 例子
[root@tl ~]# docker network connect mynet a93cfbe0f7d4
连通之后就是将容器放到网络下
docker network inspect mynet
[root@tl ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 默认网络
a93cfbe0f7d4 tomcat "catalina.sh run" About a minute ago Up About a minute 0.0.0.0:32769->8080/tcp tomcatBase
# 自定义网络
b7c591aee43f tomcat "catalina.sh run" 11 minutes ago Up 11 minutes 0.0.0.0:5000->8080/tcp tomcat01
[root@tl ~]# docker network inspect mynet
[
{
"Name": "mynet",
"Id": "19e2a7bd09044a818e0816d4ecc800baac6849fe7cf58cddc6c1887e76eb2940",
"Created": "2020-09-04T11:43:00.5307361+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": {
// 刚刚添加的。
"a93cfbe0f7d4333c3c9ee6d5984246e09579a0872e1e0039892f0940050802cf": {
"Name": "tomcatBase",
"EndpointID": "86e40f177cf3d391ef560e9ee672302498839b3a5f789ce2f7aa9947b82ce212",
"MacAddress": "02:42:c0:a8:00:03",
"IPv4Address": "192.168.0.3/16",
"IPv6Address": ""
},
"b7c591aee43f7794ee5ed1d00cb6e5070bb2c68cef03c3825c6636085cc7e47a": {
"Name": "tomcat01",
"EndpointID": "dbfe791268d4c9d300f98dae712e5be6ac69a02202934920dd5161f7ed96de98",
"MacAddress": "02:42:c0:a8:00:02",
"IPv4Address": "192.168.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
一个容器两个IP

