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
再说点没用的
容器通信这个问题就像冰山,看起来很简单,实际上水面以下还藏着很多未知。当应用的规模脱离单机,向集群、微服务演变时,才发觉单机下的通信只是冰山一角,很多问题在解决以后才发现,原来都是因为原理不够清晰。
现在我觉得,并不是所有东西我们都要学(即便它真的很酷),如果因为学了就要去用,那就像孔雀的羽毛一样华而不实。适合的才是最好。
最新文章
- Microsoft.AspNet.Identity 自定义使用现有的表—登录实现
- leancloud 手机注册用户(调用API) 教程
- lecture15-自动编码器、语义哈希、图像检索
- sql FOR XML PATH
- Chap6: question38 - 42
- jquery ajax 实例
- 17--Box2D使用(三、触摸交互)
- js输入框对金额的匹配
- 升级wamp5集成安装包 php5.2到php5.3
- cgLib生成动态代理
- CentOS环境下Docker私有仓库搭建
- JSON入门看这一篇就够了
- 平时作业七 Java
- 从零开始学习Java多线程(二)
- Linux内核读书笔记第三周 调试
- sql 中多表查询-leetcode : Combine Two Tables
- springboot mail+Thymeleaf模板
- 【转载】VC维,结构风险最小化
- 关于JFame 屏幕居中显示的问题
- ASP.NET中母版页引用外部js或css文件无效,提示对象未定义解决方法
热门文章
- 如果你想or即将成为一名程序员,那你需要知道这些东西!上岗须知~
- 用cgroup限制内存以防止Linux因内存用尽卡死
- Python自动化准备工作(pycharm安装)
- Excel 导出的方法 之二
- Helium文档12-WebUI自动化-go_to在当前的Web浏览器窗口中打开指定的URL
- 在 Istio 中实现 Redis 集群的数据分片、读写分离和流量镜像
- ssm整合所用全部依赖pom.xml(idea版)
- APP打开(三)—激活率提升20%的思考
- JUC---04Lock(二)ReentrantReadWriteLock
- Hive 如何快速拉取大批量数据