docker生产——容器通信
简介
在接触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生产——容器通信的更多相关文章
- Docker从入门到精通(六)——容器通信
想要变成 Docker 的高阶玩家,搞懂 Docker 的容器通信是必不可少的. 1.需求 通常一个 Web 项目上线,我们会把开发完成的服务部署在Tomcat 服务器里面,然后需要的持久化数据会存放 ...
- AspNetCore容器化(Docker)部署(二) —— 多容器通信
一.前言 着上一篇 AspNetCore容器化(Docker)部署(一) —— 入门,在单个容器helloworld的基础上引入nginx反向代理服务器组成多容器应用. 二.配置反向代理转接 配置转接 ...
- WSL docker打通容器间通信和追加端口映射
最近在docker中搭建一个服务,需要有多个容器通信.这里简单记录一下如何在容器间进行通信,同时说一下已经存在的容器如何追加端口映射. 增加网桥 容器间通信的目的是不适用IP而是使用容器名称进行网络通 ...
- Docker与容器快速入门
Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题.怎么解决的.用什么技术解决的都还没想清楚的时候就去探索docker组件 ...
- Kubernetes+Docker+Istio 容器云实践
随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求.近年来,互联网.移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的容器云 ...
- Docker之容器化学习之路v20.10.3
Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...
- 理解Docker单机容器网络
在” 理解Docker单机容器网络 “一文中,还有一个Docker容器网络的功能尚未提及,那就是Docker容器的端口映射.即将容器的服务端口P’ 绑定到宿主机的端口P上,最终达到一种效果:外部程序通 ...
- Docker跨主机通信之路由
一.实验环境: 主机名 主机IP Docker0_IP Docker1 192.168.88.130 172.17.0.1 Docker2 192.168.88.131 172.18.0.1 二.实验 ...
- Docker,容器,虚拟机和红烧肉
Docker火了,有多火你自己看看下面的统计数据就知道了 在发布4个月的时间里,下载量就超过50000次,github上收到超过4000个star,涌现了超过100个贡献者,并且有超过150个项目和超 ...
随机推荐
- 如何把C++的源代码改写成C代码?而C改C++只需一步!
★ 如何把C++的源代码改写成C代码? C++解释器比C语言解释器占用的存储空间要大,想要在某些特定场合兼容C++代码,同时为了节省有限的存储空间,降低成本,也为了提高效率,将用C++语言写的源程序用 ...
- spring boot:用spring security加强druid的安全(druid 1.1.22 / spring boot 2.3.3)
一,druid的安全保障有哪些环节要注意? 1,druid ui的访问要有ip地址限制 2,用户必须要有相应的权限才能访问druid 3,关闭重置功能 说明:stat-view-servlet.url ...
- spring boot:用dynamic-datasource-spring-boot-starter配置druid多数据源(spring boot 2.3.3)
一,dynamic-datasource-spring-boot-starter的用途? 1,dynamic-datasource-spring-boot-starter 是一个基于springboo ...
- linux 压缩 tar命令
linux中tar命令用法 总结 *.tar 用 tar –xvf 解压 *.gz 用 gzip -d或者gunzip 解压 *.tar.gz和*.tgz 用 tar –xzf 解压 *.bz2 ...
- linux(centos8):使用tree命令查看目录结构
一,tree命令的用途 tree命令以树状图列出文件目录结构 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的源 ...
- MS SQL SERVER执行大脚本文件时,提示“内存不足”的解决办法
问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行 ...
- Python之集合详解
定义: 1.不同元素组成 2.无序 3.集合中的元素必须是不可变类型 创建集合 s = {1,2,3,4,5,6,7,8} 1.定义可变集合 >>> set_test = set(' ...
- Spring笔记(4) - Spring的编程式事务和声明式事务详解
一.背景 事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作 ...
- RPM与YUM使用
1.RPM 1.1RPM简介 RPM全名RedHat Package Manager 优点: 1. 由于已经编译完成并且打包完毕,所以软件传输与安装上很方便 (不需要再重新编译): 2. 由于软件的信 ...
- SSM中 spring-mvc.xml 配置文件
<!--扫描控制器包--><context:component-scan base-package="<!--控制器包所在路径-->">< ...