docker容器互联的实现步骤

 更新时间:2023年12月24日 11:28:52   作者:人间打气筒(Ada)  
容器互联是除了端口映射外另一种可以与容器通信的方式,本文就来介绍一下docker容器互联的实现步骤,感兴趣的可以了解一下

一、容器互联概述:

容器互联是除了端口映射外另一种可以与容器通信的方式。端口映射的用途是宿主机网络与容器的通信,而容器互联是容器之间的通信。

当前实现容器互联有两种方式:

一种是把两个容器放进一个用户自定义的网络中,

另一种是使用--link参数(已经弃用,即将删除的功能)。

为什么要使用一个单独的网络来连接两个容器呢?

设想一下后端容器需要调用一个数据库环境,数据库容器和后端服务容器如果使用上下文中的暴露端口或者映射端口来通信,势必会把数据库的端口也暴露在外网中,导致数据库容器的安全性大大降低,为了解决这个问题,docker允许用户建立一个独立的网络来放置相应的容器,只有在该网络中的容器才能相互通信,外部容器是无法进入这个特定网络中的。

一个容器可以同时加入多个网络,使用不同地址可以访问不同网络中的容器。

二、案例实验:

1、用户自定义的网络:

首先创建两个容器,命名为cont1和cont2

[root@docker ~]# docker run -itd --name=cont1 busybox
[root@docker ~]# docker run -itd --name=cont2 busybox

2、查看当前的IP信息:

Cont1pingcont2测试:

接下来创建一个独立的容器网络,这里使用bridge驱动(桥接模式),其他可选的值还有overlay和macvlan。

[root@docker ~]# docker network create -d bridge --subnet 172.25.0.0/16 demo_net
[root@docker ~]# docker network ls

使用--subnet和--gateway可以指定子网和网关,现在我们把cont2加入到demo_net中

[root@docker ~]# docker network connect demo_net cont2
[root@docker ~]# docker network inspect demo_net

使用docker network inspect可以查看网络中容器的连接状态。Container2已经在demo_net网络中,注意IP地址使自动分配的。

[root@huyang1 ~]# docker exec -it 9a /bin/sh
/ # ifconfig

对比发现,此时cont2已经有了172.25.0.0的网络

3、启动第三个容器:

[root@docker ~]# docker run --network=demo_net --ip=172.25.3.3 -itd --name=cont3 busybox

[root@docker ~]# docker network inspect demo_net

此时,有三个容器,cont1和cont2可以ping通,cont2

和cont3可以ping通,而宿主机可以和三者任意ping通,详情如下图:

4、查看三个容器内部的网络:

[root@docker ~]# docker exec -it cont1 ifconfig

[root@docker ~]# docker exec -it cont2 ifconfig

[root@docker ~]# docker exec -it cont3 ifconfig

5、Ping测试:

【cont2】

[root@docker ~]# docker exec -it cont2 ping 172.17.0.2
[root@docker ~]# docker exec -it cont2 ping 172.25.3.3

【cont1】

[root@docker ~]# docker exec -it cont1 ping 172.17.0.2
[root@docker ~]# docker exec -it cont1 ping 172.25.0.2
[root@docker ~]# docker exec -it cont1 ping 172.25.3.3

【cont3】

[root@docker ~]# docker exec -it cont3 ping 172.17.0.2
[root@docker ~]# docker exec -it cont3 ping 172.25.0.2
[root@docker ~]# docker exec -it cont3 ping 172.17.0.3

Ps备注:

当发生三个容器cont1/2/3可以相互之间都能ping通,这时候,需要重启容器(systemctl restart docker),再开启测试!!!

到此这篇关于docker容器互联的实现步骤的文章就介绍到这了,更多相关docker容器互联内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker如何使用nginx搭建tomcat集群(图文详解)

    Docker如何使用nginx搭建tomcat集群(图文详解)

    这篇文章主要介绍了Docker使用nginx搭建tomcat集群的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Docker 镜像结构详解

    Docker 镜像结构详解

    Docker镜像是由一系列层(layers)组成的,理解Docker镜像的结构对于有效地构建、共享和管理Docker镜像至关重要,本文给大家介绍Docker镜像结构的相关知识,感兴趣的朋友一起看看吧
    2025-10-10
  • Docker数据卷和挂载目录的使用

    Docker数据卷和挂载目录的使用

    docker 在容器中管理数据主要有两种方式,包括数据卷和挂载主机目录,本文主要介绍了Docker数据卷和挂载目录的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • docker如何修改容器ip范围

    docker如何修改容器ip范围

    这篇文章主要介绍了docker如何修改容器ip范围问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Docker安装OpenWrt的实现步骤

    Docker安装OpenWrt的实现步骤

    OpenWrt是一种可以运行在路由器上的嵌入式操作系统,提供了许多网络服务和功能,本文主要介绍了Docker安装OpenWrt的实现步骤,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 详解如何将docker快速升级到最新版本

    详解如何将docker快速升级到最新版本

    最近在对区块链浏览器调优,该区块链浏览器就是使用docker部署的微服务,在一台新的服务器上启动时报错,发现是docker版本过低,所以本文给大家介绍了将docker快速升级到最新版本的方法,需要的朋友可以参考下
    2024-02-02
  • 部署Prometheus+Grafana监控平台实践

    部署Prometheus+Grafana监控平台实践

    文章介绍了如何在宿主机上配置Prometheus和Grafana,并使用NodeExporter监控Linux服务器,通过Docker部署Prometheus和Grafana,并在Prometheus中添加NodeExporter作为数据源,最后,通过Grafana导入仪表盘来可视化监控数据
    2026-01-01
  • 利用Docker分层构建优化镜像大小的实现

    利用Docker分层构建优化镜像大小的实现

    合适docker镜像文件大小不仅影响容器启动效率,也影响资源占用效率,本文介绍如何利用分层方式构建docker镜像,采用多种方式避免镜像文件太大而影响性能,需要的朋友可以参考下
    2025-01-01
  • Docker拉镜像报错error pulling image configuration: unknown blob

    Docker拉镜像报错error pulling image configuration:

    这篇文章主要介绍了Docker拉镜像报错error pulling image configuration: unknown blob的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • supervisor下的Dockerfile的多服务镜像封装操作

    supervisor下的Dockerfile的多服务镜像封装操作

    这篇文章主要介绍了supervisor下的Dockerfile的多服务镜像封装操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论