前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker高级篇笔记(九)Docker网络详细学习

Docker高级篇笔记(九)Docker网络详细学习

作者头像
一写代码就开心
发布2022-05-09 10:08:45
5570
发布2022-05-09 10:08:45
举报
文章被收录于专栏:java和python

目录

  • 回顾
  • docker0 讲解
    • docker关于网络的常用命令
      • 查看网络
      • 查看网络源数据
      • 删除网络
    • docker 网络能干嘛
    • 网络模式
      • bridge模式
      • host模式
      • none模式
      • container模式
      • 自定义网络

回顾

我们没有开启docker,直接在虚拟机里面使用命令,ifconfig 我们可以看到

在这里插入图片描述
在这里插入图片描述

在我们启动docker时候,我们查看

在这里插入图片描述
在这里插入图片描述

会多了一个docker0

docker0 讲解

在这里插入图片描述
在这里插入图片描述

会多了一个docker0;

·查看docker网络模式命令

默认创建3大网络模式

在这里插入图片描述
在这里插入图片描述

docker network ls

docker关于网络的常用命令

查看网络

docker network ls

查看网络源数据

docker network inspect XXX网络名字

删除网络

docker network rm XXX网络名字

docker 网络能干嘛

·容器间的互联和通信以及端口映射 ·容器IP变动时候可以通过服务名直接网络通信而不受到影响

网络模式

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
·bridge模式:使用--network  bridge指定,默认使用docker0
·host模式:使用--network host指定
·none模式:使用--network none指定
·container模式:使用--network container:NAME或者容器ID指定

·docker容器内部的ip是有可能会发生改变的 也就是我们创建每一个容器,里面默认的网络模式是bridge,如果我们关闭容器,启动容器,里面的ip是可能变化的

bridge模式

网桥;

我们的虚拟机里面,进入虚拟机,看当前虚拟机的ip,使用ifconfig就可以查看到 有一个ens33了,里面就有当前虚拟机的ip; 只要我们把虚拟机的防火墙关闭,在外面浏览器,就可以访问到这个ip里面的东西,也就是这个虚拟机和外界互通的,网络互通的

,

我们启动了docker,这个docker也创建了一个ip,叫docker0

在这里插入图片描述
在这里插入图片描述

也就是在docker里面的网络操作,就是关联ens33,就是docker里面的操作,和网络关联的,先通过docker0,之后关联到ens33,之后到我们的外网;

他们就是这样关联的;

在这里插入图片描述
在这里插入图片描述

我们在docker里面还可以创建容器,每一个容器里面也有ip,那么在容器里面要访问网络,就要一层一层的关联到外面了

在这里插入图片描述
在这里插入图片描述

他们之间的关系可以这样表示

在这里插入图片描述
在这里插入图片描述

从上图可以看到,容器直接互相访问,需要docker0

host模式

直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。

也就是我们创建的容器如果是以host的模式,那么这个容器里面没有ip了,默认和ens33的ip一样,没有中间的docker0了;

在这里插入图片描述
在这里插入图片描述

容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。

在这里插入图片描述
在这里插入图片描述

none模式

在none模式下,并不为Docker容器进行任何网络配置。 也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo 需要我们自己为Docker容器添加网卡、配置IP等。 ·禁用网络功能,只有lo标识(就是127.0.0.1表示本地回环)

代码语言:javascript
复制
使用了这个,就是没网络了

container模式

新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

在这里插入图片描述
在这里插入图片描述

自定义网络

为什么要使用这个?

两个容器里面,互相ping,通过ip地址是可以互通的,但是IP地址是随机变化的,我们想要使用服务名进行互相联通,所以就不能使用gridge了; 我们就需要自定义的网络了;

使用 ·自定义桥接网络,自定义网络默认使用的是桥接网络bridge ·新建自定义网络

代码语言:javascript
复制
·问题结论
·自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
·自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)
·自定义网络本身就维护好了主机名和ip的对应关系(ip和域名都能通)

新建容器的时候,使用了自己新建的网络模式,那么两个容器之间互通,就可以使用容器的服务名

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 回顾
  • docker0 讲解
    • docker关于网络的常用命令
      • 查看网络
      • 查看网络源数据
      • 删除网络
    • docker 网络能干嘛
      • 网络模式
        • bridge模式
        • host模式
        • none模式
        • container模式
        • 自定义网络
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档