实现Docker通信网络配置

介绍

  • docker有一个默认网络docker0, 容器之间默认使用docke0 网络
  • 每一个 docker容器是相互隔离的,容器之间、容器与宿主机之间是在同一子网,使用 ip 可通信
  • 容器之间可使用 link 互联
  • 自定义网络
  • 不同容器之间通信

查看本地网络

ifconfig 

在这里插入图片描述

宿主机与容器通信

#安装tomcat9527
docker run -d -P --name tomcat9527 tomcat:8.0
#查看tomcat ip
docker exec -it  69185a4c3004 ip addr

在这里插入图片描述

  • tomcat9527网络查看
docker network inspect af3d4a96068e

tomcat9527网络
tomcat9527 网关是docker0 ip地址,容器与宿主机在同一子网可以ping 通

容器之间通信

#安装tomcat9528
docker run -d -P --name tomcat9527 tomcat:8.0
# 进入容器
docker exec -it 9c03cb6a8bef /bin/bash
# 查看ip
ip add 
# tomcat9528-> ping tomcat9527
ping 172.17.0.2
# 组合命令 (只能ping通容器ip,容器名称ping不通)
docker exec 69185a4c3004  ping 172.17.0.2 

在这里插入图片描述
容器之间通信依赖于宿主机docker0 网路,同一个主机下,docker 容器使用ip 可以实现通信。
实际运用中,ip可能会发生变化,尤其是分布式中,只能通过容器名访问,容器之间互联可以使用 -link 实现互联

容器互连

# 启动一个tomcat9529
docker run -d -P --name tomcat9529 --link tomcat9527 tomcat:8.0 
# tomcat9529 ping -> tomcat9527
docker exec tomcat9529 ping tomcat9527 

在这里插入图片描述
--link 是单项连接

  • 网络配置

[root@localhost ~]# docker exec  tomcat9529 cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      tomcat9527 69185a4c3004
172.17.0.4      220f9c19d4ce
[root@localhost ~]# 
[root@localhost ~]# docker exec  tomcat9527 cat /etc/hosts 
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      69185a4c3004
[root@localhost ~]# 

实际 tomcat9529 配置了tomcat9527地址
使用--link 可实现容器互联,使用容器名通信,但是是单项的,在分布式中,使用link 会吐血 珍爱生命,远离link

除了 link 之网络通信,可以创建一个新的网络, 先了解下docker 网络类型

自定义网络

  • Docker 网络类型
Docker网络模式配置说明
host模式-net=host容器和宿主机共享Network namespace。主机!
container模式-net=container:NAME_or_ID容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。
none模式-net=none容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。自己设置
bridge模式-net=bridge(默认为该模式) 路由器,自动划分ip!
  • 创建网络
 docker network create --driver bridge \
 --subnet 192.168.0.0/16 \
 --gateway 192.168.0.1 \
 ikang-network
  • 查看
[root@localhost ~]docker network ls
[root@localhost ~]# docker network inspect ikang-network 
[
    {
        "Name": "ikang-network",
        "Id": "5cfb420c6e4e325063356134b7c48058590f296aa95209f7a1e8a725b7049c28",
        "Created": "2020-06-13T16:55:19.784400814+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": {
            "851cf3527af39d82f0f4edfb054f73a02fec68d245a727afb1ffa25f75b9ef69": {
                "Name": "tomcat-ikang02",
                "EndpointID": "c95eb2eab805e011fdd32ba0593a11283cf9ee453e6f2649eef1b6c6af4ef1cd",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "d82234131a953dd1dae7bc5e9d321c43bcbd3f24734af4c67ccb020e3b624c60": {
                "Name": "tomcat-ikang01",
                "EndpointID": "e3fc9e78420d857c7bba01d934115ae918a38cad355405d79f5e3e908a947328",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

在这里插入图片描述

  • 创建tomcat-ikang01 连接自定义网络
docker run -d -P --name tomcat-ikang01 --net ikang-network tomcat:8.0

在这里插入图片描述

  • 创建tomcat-ikang02 连接自定义网络,使用容器名和IP分别访问tomcat-ikang01
    在这里插入图片描述
  • 使用自定义网络,创建容器,容器可相互访问
  • 自定义网络比docker0 更智能,不只限于IP 访问

容器互通

  • 梳理
网络服务说明
docker0tomcat9527、tomcat9528、tomcat9529三个服务都连接到docker0,tomcat9529 与tomcat9527 link连接
ikang-networktomcat-ikang01、 tomcat-ikang02服务与ikang-network互联
  • 配置
    tomcat01 连接到ikang-network, 与ikang-network 网络下设备通信
 docker network connect  ikang-network tomcat9527
 docker exec  tomcat9527 ping tomcat-ikang01 

在这里插入图片描述

实现docker0 下tomcat9527 与 ikang-network 网络下设备通信,tomcat9527 使用双网卡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>