简介

在接触docker的第一天起,大家应该就知道:docker容器使用沙箱机制,相互之间没有接口,一般情况下内部访问通过IP+端口。本地容器默认分配的IP极易发生变化,所以靠IP+端口访问的方式缺失稳定性。单机模式暂且不讲,集群模式下容器间的通信仅通过内部IP是无法访问的。docker给出解决方案是link和network,本文介绍一下network(link操作会复杂化容器之间的关系,本文既不推荐,也不予详解)。

network

network可以称之为网桥,如果给不同容器指定了相同网桥,那么它们之间是可以相互访问的。

使用以下命令查看docker的网桥:

docker network ls

这三个是默认的。在默认情况下,所有容器创建时都会被指派到bridge(这里说的是name而非driver)网桥下,使用以下命令查看bridge信息:

docker inspect bridge

信息会有很多,在海量的信息中找到Containers节点,这个节点内存储了包含在本网桥下的所有容器。因为同在一个网桥下,所以访问是没问题的(容器asp_net_core是web应用,mysql01是数据库,nginx001是web服务器,彼此关联):

网桥的类型

如上图所示,默认的网桥类型有三种:bridge、host、none。

bridge类似于虚拟机内网模式,host代表直接使用宿主机网络,none表示容器不使用任何网络。

假设你的服务器IP为 127.0.0.1 ,内有容器A和B,其中A在host模式网桥下,B在bridge模式网桥下,那么你访问A可以直接使用 127.0.0.1:对应端口,访问B则需要先使用-p指令将服务器IP映射到B中。

常用命令

新增
docker network create [-d 网桥类型] 网桥别名
ps:可以使用-d更改类型,如果不使用-d命令,则默认bridge。 删除
docker network rm 网桥别名 查看列表
docker network ls 查看详情
docker inspect 网桥别名 新容器指定网桥
docker run --name 容器别名 --network 网桥别名 镜像名:版本/镜像ID
PS:此命令不影响-v、-p等命令的使用 已有容器加入网桥
docker network connect 网桥别名 容器别名/容器ID

再说点没用的

容器通信这个问题就像冰山,看起来很简单,实际上水面以下还藏着很多未知。当应用的规模脱离单机,向集群、微服务演变时,才发觉单机下的通信只是冰山一角,很多问题在解决以后才发现,原来都是因为原理不够清晰。

现在我觉得,并不是所有东西我们都要学(即便它真的很酷),如果因为学了就要去用,那就像孔雀的羽毛一样华而不实。适合的才是最好。

docker生产——容器通信的更多相关文章

  1. Docker从入门到精通(六)——容器通信

    想要变成 Docker 的高阶玩家,搞懂 Docker 的容器通信是必不可少的. 1.需求 通常一个 Web 项目上线,我们会把开发完成的服务部署在Tomcat 服务器里面,然后需要的持久化数据会存放 ...

  2. AspNetCore容器化(Docker)部署(二) —— 多容器通信

    一.前言 着上一篇 AspNetCore容器化(Docker)部署(一) —— 入门,在单个容器helloworld的基础上引入nginx反向代理服务器组成多容器应用. 二.配置反向代理转接 配置转接 ...

  3. WSL docker打通容器间通信和追加端口映射

    最近在docker中搭建一个服务,需要有多个容器通信.这里简单记录一下如何在容器间进行通信,同时说一下已经存在的容器如何追加端口映射. 增加网桥 容器间通信的目的是不适用IP而是使用容器名称进行网络通 ...

  4. Docker与容器快速入门

    Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题.怎么解决的.用什么技术解决的都还没想清楚的时候就去探索docker组件 ...

  5. Kubernetes+Docker+Istio 容器云实践

    随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求.近年来,互联网.移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的容器云 ...

  6. Docker之容器化学习之路v20.10.3

    Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...

  7. 理解Docker单机容器网络

    在” 理解Docker单机容器网络 “一文中,还有一个Docker容器网络的功能尚未提及,那就是Docker容器的端口映射.即将容器的服务端口P’ 绑定到宿主机的端口P上,最终达到一种效果:外部程序通 ...

  8. Docker跨主机通信之路由

    一.实验环境: 主机名 主机IP Docker0_IP Docker1 192.168.88.130 172.17.0.1 Docker2 192.168.88.131 172.18.0.1 二.实验 ...

  9. Docker,容器,虚拟机和红烧肉

    Docker火了,有多火你自己看看下面的统计数据就知道了 在发布4个月的时间里,下载量就超过50000次,github上收到超过4000个star,涌现了超过100个贡献者,并且有超过150个项目和超 ...

随机推荐

  1. GCC编译选项笔记

    警告选项 -Wall:开启大多数的警告信息 -Wextra:开启额外的警告信息,比如参数未使用警告(-Wunused-parameter) -Werror:将警告当作错误,中断编译 优化选项 -O,- ...

  2. pyquery 匹配NavigableString

    pyquery 匹配NavigableString不像xpath那样精确找打匹配对象,只需匹配包含NavigableString的根节点

  3. 【最大匹配+二分答案】HDU 2236 无题II

    题目内容 这是一个简单的游戏,在一个\(n×n\)的矩阵中,找\(n\)个数使得这\(n\)个数都在不同的行和列里并且要求这\(n\)个数中的最大值和最小值的差值最小. 输入格式 输入一个整数\(T\ ...

  4. CAP-微服务间通信实践

    微服务间通信常见的两种方式 由于微服务架构慢慢被更多人使用后,迎面而来的问题是如何做好微服务间通信的方案.我们先分析下目前最常用的两种服务间通信方案. gRPC(rpc远程调用) gRPC-微服务间通 ...

  5. python抓取动态验证码,具体第几帧数的位置静态图片

    一.代码+注解 import os from PIL import Image import requests import io def save_img(): headers = { 'User- ...

  6. java 第五课 异常

    1.为什么使用异常? 若没有异常处理机制,会使用流程控制语句if  switch等来处理异常情况,程序复杂 2.捕捉异常try catch finally 3.方法中抛出异常throw(throw 可 ...

  7. 使用Socket通信(二)

    这个socket有梗,主要是服务器端有梗,可能大家会碰到同样的问题,网上查了好久,这里分享一下解决办法.首先在第一个module建一个类SimpleServer,这个类就是服务端,建好之后在代码左边有 ...

  8. java如何实现一个Future

    实现Futrue接口 public class MsgFuture<V> implements java.util.concurrent.Future<V> { ... ... ...

  9. altium designer使用小技巧,记录

    1.在自建库文件中添加component File--open----schlib或pcblib---Tools---new component---绘制---保存. 2.编辑component 左边 ...

  10. java Excel 自动调整列宽

    在开发中经常需要用到对Excel文件的操作,现在根据网上的资料整理如下: import java.io.FileOutputStream; import org.apache.poi.hssf.use ...