Docker网络

2023-05-16

一、简介

从其架构和运行流程来看,Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。
docker运行的基本流程为:

1.用户是使用Docker Client和Docker Daemon建立通信,并发送请求给后者。
2.Docker Daemon作为docker架构中的主体部分,首先提供docker server的功能使其可以接受docker client的请求。
3.docker engine执行docker内部的一系列工作,每一项工作都是以一个Job的形式存在。
4.Job的运行过程中,当需要容器镜像时,则从docker registry中下载镜像,并通过镜像管理驱动Graph driver将下载的镜像以Graph的形式存储。
5.当需要为docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境
6.当需要限制docker容器运行资源或执行用户指令等操作时,则通过ExecDriver来完成。
7.LibContainer是一项独立的容器管理包,Network driver以及Exec Driver都是通过LibContainer来实现具体对容器进行的操作。

docker网络完全可以参考VM虚拟机的网络配置:
在这里插入图片描述

二、细节点和基本命令

docker启动后,发现虚拟机产生了一个docker0的虚拟网卡!
在这里插入图片描述
基本命令:

# 查看当前docker的所有网络
docker network ls
#创建网络
docker network create 网络名
# 删除网络
docker network rm 网络名
# 查看网络源数据
docker network inspect 网络名
# 帮助
docker network --help

三、网络模式

在这里插入图片描述
在这里插入图片描述
可以通过下面的案例来证明容器restar之后,ip是可能发生变化的:

docker run -it --name u1 ubuntu bash
docker run -it --name u2 ubuntu bash

# 发现 u2 ip是172.17.0.3
docker inspect u2 

#模拟u2宕机
docker stop u2
docker run -it --name u3 ubuntu bash
# 发现新启动的 u3 ip是172.17.0.3 占用了之前u2的ip
docker inspect u2 

3 .1brige模式

Docker服务默认会创建一个docker0的网桥(其上有个docker0内部和接口),该乔接网络的名称为docker0,它在内核层链接了其他物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

1.整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口都叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫做veth pair)
2.每个容器实例内部也有一块网卡,每个接口都叫eth0
3.docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对,一一匹配。

在这里插入图片描述
veth pair的案例:
在这里插入图片描述

3.2Host模式

容器不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace,容器将不会虚拟出自己的网卡,而是用虚拟机的IP和端口。
在这里插入图片描述
比如下面的警告的意思是:docker启动指定了使用host模式,通过-p设置的参数将不会起到任何作用,端口会以主机端口号为主,重复则递增。
在这里插入图片描述

3.3None

在none模式下,并不为容器进行任何网络配置,也就是说这个容器没有网卡、IP、路由信息,只有一个lo,需要我们自己为docker容器添加网卡、配置IP等。
使用docker inspect none模式启动的容器,可以发现该容器是没有网关和IP信息的
在这里插入图片描述
并且只有lo这个网卡,显示着127.0.0.1这个本地回环地址
在这里插入图片描述

3.4Container

新建的容器和已经存在的一个容器共享一个网络Ip配置而不是和宿主机共享。新建立的容器不会创建自己的网卡,配置自己的ip,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
在这里插入图片描述
下面的错误就是因为两个容器公用同一个ip同一个端口导致冲突了。
在这里插入图片描述
可以用下面的这个小巧但五脏俱全的linux镜像进行演示:

docker run -it --name alpine1 alpine /bin/sh
docker run -it --network container:alpine1 --name alpine1 alpine /bin/sh

在这里插入图片描述

3.5自定义网络

自定义网络的优势是解决默认brige模式由于容器宕机导致的ip变化的问题。因为在同一个自定义网络中的容器可以将容器名当作IP来访问彼此,下面是说明案例:

#启动测试容器
docker network create test
docker run -d -p 8081:8080 --network test --name tom1 billtgoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network test --name tom1 billtgoo/tomcat8-jdk8

#测试命令
docker exec -it tom1 /bin/bash
# 在tom1容器中直接ping tom2
ping tom2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker网络 的相关文章

随机推荐

  • 每天一个adb命令:dumpsys命令详解

    dumpsys是一个能帮助我们对手机进行性能分析的命令 xff0c 它可以帮助我们获取电池 内存 cpu 磁盘 wifi等等信息 xff0c 具体能查询的信息可以通过命令 xff1a adb span class hljs built in
  • vs2017如何创建一个asax文件

    VS2017无法为网站创建Global asax文件 xff0c 导致出现错误WebForms UnobtrusiveValidationMode 需要 jquery ScriptResourceMapping 解决方案如下 xff1a 勾
  • Spring Security OAuth2.0认证授权

    文章目录 1 基本概念1 1 什么是认证1 2 什么是会话1 3什么是授权1 4授权的数据模型1 4 RBAC1 4 1 基于角色的访问控制 2 基于Session的认证方式3 整合案例3 1 SpringMVC 43 Servlet3 0
  • 浏览器不显示favicon.ico怎么办?

    原因1 xff1a 连接文件的路径不对 如上图路径的话href连接路径应该写成 xff1a href 61 34 img favicon ico 34 xff0c 具体如下 xff1a span class token operator l
  • VNCViewer连接树莓派失败、显示超时的部分原因

    刚入手树莓派 xff0c 在用VNCViewer这款软件实现树莓派的图形化桌面时遇到了一些坑 xff0c 在这里分享 xff0c 希望能对大家有所帮助 1 在文本框内输入IP地址之后一定要记得加上 端号 xff0c 如下图所示 这个端号在P
  • Kubernetes中文手册

    Kubernetes中文手册 https www kubernetes org cn kubernetes pod
  • JSP中文乱码问题终极解决方案

    在介绍方法之前我们首先应该清楚具体的问题有哪些 xff0c 笔者在本博客当中论述的 JSP 中文乱码问题有如下几个方面 xff1a 页面乱码 参数乱码 表单乱码 源文件乱码 下面来逐一解决其中的乱码问题 一 JSP 页面中文乱码 在 JSP
  • JS表白代码

    简单的JS弹窗表白代码 思路 xff1a 只有当用户输入1 xff08 表示喜欢你 xff09 才有进一步浏览的资格 如果用户输入2 xff08 不喜欢你 xff09 就会陷入死循环进行撒娇 xff0c 只有当用户输入1 xff0c 才可以
  • Quartz框架详解

    Quartz框架可以实现 异步定时任务 Quartz框架下载地址 注意1版本和2版本写法完全不一样 xff0c 本文采用的是2 x版本 下载完毕后进入进入lib文件夹 xff0c 然后将下面的几个jar引入项目 xff1a 基本实现步骤 x
  • 前端的端口问题

    本文 xff0c 将以通俗易懂的方式剖析 服务器 电脑 是怎么访问html文件 先说一下前置知识 xff1a 首先我们得知道一件事情 xff1a 电脑中每个运行的程序都对应着某个端口 xff0c 举个例子 xff1a 我们都知道mysql默
  • 湖北师范大学java习题汇编(超详细!已经进行了章节划分)

    表达式和流程控制语句 1 验证歌德巴赫猜想 一个充分大的偶数 xff08 大于或等于6 xff09 可以分解为两个素数之和 试编程序 xff0c 将 6至50之间全部偶数表示为两个素数之和 span class token keyword
  • OPENCV(五) 对给定的车牌进行字符分割

    下面有这样的一个车牌号 xff1a 现在的任务是将每一个字符区分开来 xff0c 并方框圈出来 完成这个功能需要以下的步骤 xff1a 1 灰度处理 span class token comment 读取图片 span image1 spa
  • SpringBoot整合forest(调用彩云API获取所有城市的实时天气)

    Forest简介 xff1a Forest是一个高层的 极简的轻量级HTTP调用API框架 相比于直接使用Httpclient您不再用写一大堆重复的代码了 xff0c 而是像调用本地方法一样去发送HTTP请求 环境配置 xff1a 因为本项
  • JAVA操作Kafka

    一 环境说明 1 电脑或你的服务器需要安装zookeeper和kafka 可以参考我的这篇博客 xff1a 请点击这里 xff01 2 项目中需要下面的依赖 xff1a span class token tag span class tok
  • Gradle使用本地maven仓库

    一 基本配置 在repositories下添加mavenLocal 方法 plugins span class token punctuation span id span class token string 39 java 39 spa
  • Docker容器编排

    一 简介和下载安装 1 简介 docker compose是Docker官方的开源项目 xff0c 可以管理多个docker容器组成的一个应用 你需要定义一个YAML格式的配置文件docker compose yaml xff0c 写好多容
  • 若依微服务(ruoyi-cloud)保姆版容器编排运行

    一 简介 项目gitee地址 xff1a https gitee com y project RuoYi Cloud 由于该项目运行有很多坑 xff0c 大家可以在git克隆拷贝到本地后 xff0c 执行下面的命令使master版本回退到本
  • 深入学习Tomcat----自己动手写服务器(附服务器源码)

    相信大多 Web 开发者对 Tomcat 是非常熟悉的 xff0c 众所周知 Tomcat 是一款非常好用的开源 Servlet 容器 xff0c 您一定对这个最流行的 Servlet 容器充满好奇 xff0c 虽然它并不像一个黑盒子那样让
  • Docker图形界面

    一 Portainer Portainer是一款轻量级的应用 xff0c 它提供了图形化界面 xff0c 用于方便地管理Docker环境 xff0c 包括单机环境和集群环境 官网 xff1a https www portainer io 运
  • Docker网络

    一 简介 从其架构和运行流程来看 xff0c Docker是一个C S模式的架构 xff0c 后端是一个松耦合架构 xff0c 众多模块各司其职 docker运行的基本流程为 xff1a 1 用户是使用Docker Client和Docke