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容器互联内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Distroless提高容器安全

    使用Distroless提高容器安全

    这篇文章主要为大家介绍了使用Distroless提高容器安全,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Dockerfile文本文件使用方法实例解析

    Dockerfile文本文件使用方法实例解析

    这篇文章主要介绍了Dockerfile文本文件使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Docker 替换宿主与容器的映射端口和文件路径的操作方法

    Docker 替换宿主与容器的映射端口和文件路径的操作方法

    本文介绍了如何在使用Docker容器化应用程序时,替换和配置端口和文件路径映射,本文给大家介绍的非常详细感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • Docker的文件系统映射:主机与容器间目录的双向映射详解

    Docker的文件系统映射:主机与容器间目录的双向映射详解

    通过Docker的目录映射功能,实现主机与容器间的数据共享与持久化存储,使用-v或--mount参数在运行时设置主机与容器目录映射,或通过DockerCompose配置文件实现自动化,此功能提升数据管理灵活性和效率
    2024-11-11
  • docker中容器的网络配置常用命令详解

    docker中容器的网络配置常用命令详解

    这篇文章主要介绍了docker中容器的网络配置常用命令详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • docker搭建Mycat实现读写分离的项目实践

    docker搭建Mycat实现读写分离的项目实践

    本文主要介绍了docker搭建Mycat实现读写分离的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Docker Compose引用环境变量的方法示例

    Docker Compose引用环境变量的方法示例

    在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景。本文集中介绍 docker compose 引用环境变量的方式,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 解决Docker Image镜像无法删除问题的方法

    解决Docker Image镜像无法删除问题的方法

    这篇文章主要给大家介绍了关于如何解决Docker Image镜像无法删除问题的方法,文中通过示例代码将解决的方法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • docker容器运行后退出(怎么才能一直运行)

    docker容器运行后退出(怎么才能一直运行)

    这篇文章主要介绍了docker容器运行后退出(怎么才能一直运行),本文详细的介绍了解决方法,非常具有实用价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 使用docker更改容器内root密码的操作

    使用docker更改容器内root密码的操作

    这篇文章主要介绍了使用docker更改容器内root密码的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论