Docker学习高级篇02-docker网络简介

0x00 复习一下之前的知识

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来实现具体对容器进行的操作。

image-20220130171254531

image-20220130171308227

0x01 docker network是什么?能干嘛?

docker不启动,默认的网络(网卡)情况

image-20220130171623985

image-20220130172312393

virbr0

在Centos7的安装过程中如果有选择相关虚拟化的服务安装系统后,启动网卡时会发现有一个以网桥链接的私网地址的virbr0网卡(virbr0网卡:它还有一个固定的默认IP地址192.168.122.1),是做虚拟机网桥的使用的,其作用是为连接其上的虚拟网卡提供NAT访问外网的功能。

我们之前学习Linux安装,勾选安装系统的时候,附带了libvirt服务才会生成的一个东西,如果不需要可以直接将libvirtd服务卸载。

yum remove libvirt-libs.x86_64

docker启动后,默认的网络(网卡)情况

除了上面说的三个,多出了一个docker0虚拟网桥

image-20220130172732265

安装完docker后,默认创建的3大网络模式,主要用的是bridge,勉强用host,一般不用none

docker network ls 

image-20220130172910087

0x02 常用基本命令

docker network --help

image-20220130173128737

docker network create aa_network
docker network ls
docker network inspect aa_network
docker network rm aa_network

image-20220130173630259

image-20220130173742345

通过docker inspect bridge可以看出来我们的网卡名字默认就是docker0

image-20220130174102639

docker网络能干吗?

现在我们通过一个docker来建立起一个。docker网络管理和容器调用之间的规划。

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

0x03 docker网络模式分类

总体介绍

网络模式 简介
bridge 为每一个容器分配、设置IP等,并将容器链接到一个叫docker0的虚拟网桥,默认为此模式
host 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
none 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网络链接,IP等
container 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP,端口范围

bridge就相当于30个人用自己的电脑来看电影

host即30个人去电影院看同一个屏幕的电影

none几乎不用,没有做任何的配置,需要自己去配置。一般不用。

container 我屏幕坏了,借用同桌的屏幕来看电影。和指定的容器共享IP。

bridge模式:使用--network bridge指定,默认使用docker0

host模式:使用--network host指定

none模式:使用--network none指定

container模式:使用--network container:NAME或者容器ID指定

docker network底层ip和容器映射变化

通过 下方命令可以看出两个容器的IP都是唯一的,就是默认bridge。但是如果这时候其中一个容器坏了,再重新启动一个容器,发现IP还是和之前的一样,还是03。

docker run -it --name=u1 ubuntu /bin/bash
docker run -it --name=u2 ubuntu /bin/bash
docker inspect u1 | tail -n 20
docker inspect u2 | tail -n 20

image-20220130214432418

结论:docker容器内部的ip是有可能发生变化的,所以我们要规划好我们的服务,写好我们的服务。所以某些网络就必须跑在我们指定的网络范围内,例如通过新建一个网络。

docker network create bb_network
posted @   谨言慎行啊  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示