简介

在接触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. 网络编程—【自己动手】用C语言写一个基于服务器和客户端(TCP)!

    如果想要自己写一个服务器和客户端,我们需要掌握一定的网络编程技术,个人认为,网络编程中最关键的就是这个东西--socket(套接字). socket(套接字):简单来讲,socket就是用于描述IP地 ...

  2. net core 微服务 快速开发框架

    dymDemo github 地址:https://github.com/duyanming/dymDemo dym 分布式开发框架 Demo 熔断 限流 事件总线(包括基于内存的.rabbitmq的 ...

  3. 会用Docker的人都别装了,这多简单呐

    学术又官方的说法 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是 ...

  4. composer 打印美化

    { "name": "brady_frmwork", "description":"php framwork", &qu ...

  5. centos8上安装mysql8

    一,下载并解压mysql8 1,mysql官网 https://www.mysql.com/ 2,下载到source目录 [root@yjweb source]# wget https://cdn.m ...

  6. switch host 切换本地host

    百度网盘提取地址 提取码: 753r 下载后放到软件目录即可使用

  7. Hadoop框架:DataNode工作机制详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.工作机制 1.基础描述 DataNode上数据块以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是数据块元数据包括长度.校验.时 ...

  8. C++学习---队列的构建及操作

    一.循环队列 #include <iostream> using namespace std; #define MAXQSIZE 100 typedef struct { int* bas ...

  9. 用GitHub Pages搭建博客(一)

    什么是GitHub Pages GitHub官网介绍 GitHub Pages 官网是这样介绍的: Websites for you and your projects. 给你和你的项目的网站. Ho ...

  10. 重载符operator() -- effective c++ 3rd P71的的隐式类型转换及相关的研究

    class的"operator 返回类型 ()" 的重载 就是对(class)的重载,这个重载符不用参数,参数就是自身,并且与函数传递的参数括号等价 如 func(c), 并且多个 ...