docker基础(17):Docker网络之Docker0
文章目录
- 准备工作
- Docker是如何处理容器网络的?
- 测试一下容器之间是否可以互相ping通
准备工作
为了避免干扰,这里删除所有的容器和镜像。
# 删除所有容器
docker rm -f $(docker ps -a -q)
# 删除全部镜像
docker rmi -f $(docker images -qa)
查看一下本机网络
Docker是如何处理容器网络的?
在生产环境中,我们需要很多微服务,也需要部署redis和数据库,而访问数据库和redis需要指定地址或者ip,假设我们某个容器启动的redis出了故障,需要启动一个新的redis实例,而新示例的ip发生变化,这时候微服务里配置的ip地址要怎么办?
docker给每个容器都分配一个ip,并且容器与容器是客户互相访问的。
测试一下容器之间是否可以互相ping通
由于dockerhub官方的tomcat镜像没有带ping命令,这里我用自己制作的tomcat镜像来测试(已上传至dockerhub官方,公开可用)。
注意:lengcz/tomcat:1.0 是我制作的公开的tomcat镜像
- 先启动一个tomcat01
docker run -d -P --name tomcat01 lengcz/tomcat:1.0
查看tomcat01的网络配置,找到了它的ipaddress
docker exec -it tomcat01 ifconfig
- 在主机上ping tomcat01这个容器(可以ping通)
#主机可以ping到这个地址
ping 172.17.0.2
下面主机上再次查看ip addr,我们发现新增了一个网卡(红色圈起来的)。
原理:
每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了veth-pair技术!
- 每启动一个容器,linu系统就会新增一个虚拟网卡。
下面我们在启动一个tomcat02,此时发现又新增了一张虚拟网卡。
docker run -d -P --name tomcat02 lengcz/tomcat:1.0
这样我们可以发现
tomcat01和tomcat02在主机上都有一个网卡,在容器内也有一个网卡,一对网卡连接主机和容器内。
原理
每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。这是个桥接网卡,使用了veth-pair
技术!
我们来测试下tomcat01和tomcat02容器间是否可以互相ping通。结论发现是可以ping通的。
结论:容器与容器之间是可以互相访问的。我们看一下它的网络结构图
结论
tomcat1和tomcat2共用一个路由器。是的,他们使用的一个,就是docker0。任何一个容器启动 默认都是docker0网络。
docker默认会给容器分配一个可用ip。
小结
Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网 关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接 通信。
Docker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并 让他们彼此联通(这样一对接口叫veth pair);
Docker中的网络接口默认都是虚拟的接口。虚拟接口的优势就是转发效率极高(因为Linux是在内核中 进行数据的复制来实现虚拟接口之间的数据转发,无需通过外部的网络设备交换),对于本地系统和容 器系统来说,虚拟接口跟一个正常的以太网卡相比并没有区别,只是他的速度快很多。
docker基础(17):Docker网络之Docker0相关推荐
- 上云——docker基础篇 docker网络
docker网络 每启动一个docker容器,docker都会给容器分配一个ip,只要安装了docker,默认就会有一个docker0的网卡(桥接模式),使用的技术是evth-pair技术,我们直接在 ...
- Docker基础------安装docker,以及一些常用的docker命令,docker网络,自定义docker网络
centos安装docker 1.卸载旧版的docker yum remove docker \docker-client \docker-client-latest \docker-common \ ...
- 5.Docker基础之Docker网络
文章目录 Docker 网络 理解 Docker0 --link 自定义网络 网络连通 实战:部署 Redis 集群 Docker 网络 理解 Docker0 清空所有环境 docker rm -f ...
- Docker基础:Docker Desktop community的手动更新方法
这篇文章介绍一下MacOS上的Docker Desktop community手动更新的方法. 目录 环境说明 Check for update 下载并更新 结果确认 总结 环境说明 liumiaoc ...
- docker基础之原理与docker网络
目录 docker原理 docker基础概念 docker镜像 构建镜像 Dockerfile docker四种基础网络 docker原理 docker :容器技术,其原理基于Linux内核的name ...
- Docker基础03--Dockerfile详解与镜像发布--(狂神说docker学习笔记)
文章目录 1. Dockerfile介绍 2. Dockerfile指令说明 3. 制作Centos镜像 3.1 编写Dockerfile的文件 3.2 通过这个文件构建镜像(注意最后加个点!!!) ...
- Kubernetes全栈架构师(Docker基础)--学习笔记
目录 Docker基础入门 Docker基本命令 Dockerfile用法 制作小镜像上 多阶段制作小镜像下 Scratch空镜像 Docker基础入门 Docker:它是一个开源的软件项目,在Lin ...
- Docker学习(3)-Docker镜像构建和使用
Docker学习(1)-Docker简介 Docker学习(2)-Docker基础1 Docker 镜像与制作 Docker 镜像内是否包含内核(bootfs)? 首先,从镜像的体积大小来说,一个比较 ...
- docker 获取宿主机ip_Docker基础修炼6——网络初探及单机容器间通信
如果觉得文章有帮助,欢迎点击头像关注我获取更多原创文章,同时也欢迎转发. 同时也可以在我的历史文章中找到Linux操作系统相关的服务器运维管理入门系列文章,欢迎交流. 前文演示docker容器内部数据 ...
最新文章
- 1-flutter 安装步骤
- 我读过的最好的epoll讲解--转自”知乎“ 【转】
- java的集合:List、Set和Map
- 基于matlab的脑瘤mr图像处理_基于Matlab GUI的医学图像处理课程虚拟实验平台设计...
- 一文搞懂JVM架构:跳槽面试大厂被拒
- 2种图像增强方法:图像点运算和图像灰度化处理
- win32获取当前运行程序的内存地址_一个lock锁,就可以分出程序员对问题处置方式水平的高中低...
- pytorch torch.nn.RNN
- Vant报错:[Vue warn]: Invalid prop: type check failed for prop “lazyLoad“. Expected Boolean, got String
- Java内部类相关问题的总结与体会
- 哪些计算机的应用需采用多媒体技术,计算机多媒体技术的应用现状与发展前景...
- 11.20日个人工作总结
- java银行收费系统界面程序_基于jsp的物业收费管理系统-JavaEE实现物业收费管理系统 - java项目源码...
- uva10673floor and cei扩展的欧几里得
- 2018年DevOps最新现状研究报告解读
- cocos2d简单弹球
- pytorch优化器学习率调整策略以及正确用法
- 知识图谱认知智能理论与实战----------第二章 知识图谱模式设计
- 【阿里云IoT+YF3300】2.阿里云IoT云端通信Alink协议介绍
- SQL 身份证获取性别