• 【docker】容器跟宿主机、其他容器通信


    说明

    容器跟宿主机、其他容器通信的关键在于它们要在同一个网络,或者通过修改路由信息来可以让它们互相之间能够找得到对方的 IP。本文主要介绍让它们在同一个网络的方法。

    Docker 自定义网络模式介绍

    Docker容器可以通过自定义网络来与宿主机或其他容器进行通信。在Docker中,有三种类型的网络:bridge网络、host网络和Overlay网络。

    1. Bridge网络

    Bridge网络是最常用的网络类型,每个Docker主机都具有一个默认的Bridge网络。当Docker容器启动时,它将自动加入默认的Bridge网络,并分配一个IP地址。Docker容器可以通过容器名称或IP地址来与其他容器进行通信。如果要将容器暴露给宿主机或外部网络,则可以使用“docker run”命令中的“-p”或“–publish”选项指定端口映射。

    1. Host网络

    Host网络允许Docker容器直接使用宿主机的网络堆栈。这意味着容器将使用宿主机的IP地址,并且不会进行任何网络地址转换(NAT)。这使得容器直接访问宿主机上的其他服务变得更加容易。要使用Host网络,请在“docker run”命令中使用“–network=host”选项。

    1. Overlay网络

    Overlay网络是一种多节点网络,它允许Docker容器在不同的Docker主机之间进行通信。这种网络类型需要使用Docker Swarm或Kubernetes等Docker集群管理工具。在Overlay网络中,每个Docker容器分配一个唯一的IP地址,并且容器间的通信是通过虚拟网络进行的。

    总之,通过使用自定义网络和IP地址,Docker容器可以轻松地与宿主机和其他容器进行通信,从而实现更高效的应用程序部署和管理。

    下面以 Bridge 模式来举例

    创建自定义网络

    假设你的网络 IP 是 a.b.c.1,子网掩码是 255.255.255.0 ,自定义网络名称为 mynet。那么可以使用下面的命令来创建自定义网络:

    
    docker network create --driver bridge --subnet a.b.c.0/20 mynet 
    
    
    • 1
    • 2
    • 3

    通信测试

    1. 先创建容器
    
    docker run -it --network mynet --ip a.b.c.11 ubuntu:20.04
    
    
    • 1
    • 2
    • 3
    1. 安装 inetutils-ping
    
    apt install -y inetutils-ping
    
    
    • 1
    • 2
    • 3
    1. 通信测试
    • 3.1 跟宿主机通信
    
    ping a.b.c.1
    
    
    • 1
    • 2
    • 3
    • 3.2 跟其他容器通信
    
    ping a.b.c.22
    
    
    • 1
    • 2
    • 3
    • 3.3 跟互联网通信
    
    ping www.baidu.com
    
    
    • 1
    • 2
    • 3

    如果请求没有超时且没有丢包,则说明通信成功

  • 相关阅读:
    Excel函数 - 多条件查找查询公式
    Android 12.0 app调用hal层接口功能实现系列四(app层实现)
    .9图片的问题总结(Android studio制作):
    Maven assembly多模块多环境(dev|test|prod)定制化打包SpringBoot项目详解
    Dataset:heart disease数据集的简介、下载、使用方法之详细攻略
    Linux系统使用命令来查看本地端口的使用情况
    2024.3.12
    刚刚接触struts2的踩雷记录
    spring MVC
    MySQL只同步单个表或多个表,非全部同步!
  • 原文地址:https://blog.csdn.net/Sbtgmz/article/details/132941728