Docker | 容器互联互通

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker | 容器互联互通

上篇讲到创建自定义网络,我创建了 mynet 网络,并指定了网关和子网地址。在上篇结尾呢,我抛出了一个问题:其它网络下的容器可以直接访问mynet网络下的容器吗?今天就让我们一块看下怎么实现容器互联。


其它网络下的容器加入mynet网络,实现一个容器两个ip地址


网络集群


  1. 先创建test-network网络:
  • docker network create test-network
  1. 再运行centos01容器并加入到test-network网络下
  • docker run -it -P --name centos01 --net test-network centos

centos01容器已经加入在test-network网络下了


centos01加入mynet网络


root@--- ~]# docker network connect mynet centos01


查看mynet网络


  • docker network ls
[root@--- ~]# docker network ls
NETWORK ID     NAME           DRIVER    SCOPE
feafa30d4051   bridge         bridge    local
e8bf4fced9e2   host           host      local
0096a971fd2c   mynet          bridge    local  # 自定义bridge网桥
6263db0933b9   none           null      local
799426d70aa2   test-network   bridge    local
  • docker network inspect 0096
[root@--- ~]# docker network inspect 0096
[
    {
        "Name": "mynet",
        "Id": "0096a971fd2c66400e53cbae5e53eceedc2f90d5685917e9534640a3535c0ef1",
        "Created": "2021-10-04T10:18:09.113847736+08:00",
        # ... 省略代码展示
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        # ... 省略代码展示
        "Containers": {
            "2fac920eebd505794c4a27ef4efdf531d32805e8663bded93a473bd28236bc27": {
                "Name": "mynet-centos01",
                "EndpointID": "3aff075...",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            },
            "3dceda051252b6970fe2156bac7710ba6489a97aac68c49b1c85a2f130d0556f": {
                "Name": "mynet-tomcat01",
                "EndpointID": "9f52b19...",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "cb1922b95b9316d129b54f3545fad9729092926e10a1d5517f8928db42706151": {
                "Name": "centos01",
                "EndpointID": "0ba2107...",
                "MacAddress": "02:42:c0:a8:00:04",
                "IPv4Address": "192.168.0.4/16",   # 新加入的centos01容器
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]


查看centos01的容器信息


可以看到Networks下面存在mynettest-network两个网络连接信息

一个容器两个ip地址


无关代码已省略展示

[root@--- ~]# docker inspect cb19
[
    {
        "Id": "cb1922b95b9316d129b54f3545fad9729092926e10a1d5517f8928db42706151",
        "Created": "2021-10-03T13:39:00.942877668Z",
        "Path": "/bin/bash",
        "Args": [],
        # ... 省略代码展示
        "NetworkSettings": {
            # ... 省略代码展示
            "Networks": {
                # 网络连接1 : mynet
                "mynet": {、
                    # ... 省略代码展示
                    "Gateway": "192.168.0.1",
                    "IPAddress": "192.168.0.4",
                    "MacAddress": "02:42:c0:a8:00:04",
                },
                # 网络连接2 : test-network
                "test-network": {
                    # ... 省略代码展示
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.3",
                    "MacAddress": "02:42:ac:12:00:03",
                }
            }
        }
    }
]


test-network网卡下的centos01访问mynet网卡下的mynet-centos01、mynet-tomcat01


容器ip和容器名都可以连接


进入centos01容器


[root@--- ~]# docker exec -it cb19 /bin/bash

mynet-tomcat01 容器的IP是: 192.168.0.3


ping mynet-tomcat01 容器的IP


[root@cb1922b95b93 /]# ping 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.186 ms
^C
--- 192.168.0.3 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6000ms
rtt min/avg/max/mdev = 0.090/0.127/0.186/0.029 ms


直接ping 容器名 mynet-centos01mynet-tomcat01


[root@cb1922b95b93 /]# ping mynet-centos01
PING mynet-centos01 (192.168.0.2) 56(84) bytes of data.
64 bytes from mynet-centos01.mynet (192.168.0.2): icmp_seq=1 ttl=64 time=0.105 ms
^C
--- mynet-centos01 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.105/0.116/0.130/0.013 ms
[root@cb1922b95b93 /]# ping mynet-tomcat01
PING mynet-tomcat01 (192.168.0.3) 56(84) bytes of data.
64 bytes from mynet-tomcat01.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.085 ms
^C
--- mynet-tomcat01 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.085/0.093/0.102/0.012 ms
[root@cb1922b95b93 /]# 


结论


其它网络下的容器可以通过加入docker网络,来访问该docker网络下的容器,并且既可以通过容器ip也可以通过容器名连接,非常方便。docker0十分强大

image.png

目录
相关文章
|
2月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
3月前
|
运维 持续交付 开发者
Docker:重塑现代应用开发的容器革命
Docker:重塑现代应用开发的容器革命
|
3月前
|
运维 持续交付 开发者
Docker:现代应用开发的容器化革命
Docker:现代应用开发的容器化革命
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
333 5
下一篇
oss云网关配置