【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. 先创建容器

docker run -it --network mynet --ip a.b.c.11 ubuntu:20.04

  1. 安装 inetutils-ping

apt install -y inetutils-ping

  1. 通信测试
  • 3.1 跟宿主机通信

ping a.b.c.1

  • 3.2 跟其他容器通信

ping a.b.c.22

  • 3.3 跟互联网通信

ping www.baidu.com

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

你可能感兴趣的:(docker,docker,容器)