分享页面
首页  >  

#

  • Docker网络模式与配置Docker自定义网络(bridge模式)
    2021-07-26

     

    一、简述VMware中三种网络模式

    可能,对于许多接触Linux操作系统的朋友而言,起初都是通过虚拟机软件进行层层深入的学习。而对于其中一种软件——VMware软件的网络连接可能就是初学者的一个难题。可能一直都并不了解所提供的三种网络模式的原理和意义。那么本小节将简单讲述一下有关VMware的三种网络模式:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。而此三种分别对应于网卡设备中的VMnet0VMnet1(或者后期新增创建的)、VMnet8NAT网卡也只能有一个)

     

    1.1桥接模式

    概念:桥接模式就是一种将主机(好比是你的笔记本上的)的网卡与虚拟机的网卡利用虚拟网桥进行通信。

     

    原理理解:对这种模式的理解可以认为是将物理机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,当然物理机也一样需要连接到这个交换机,也就是说桥接模式下的所有网卡都是交换模式,相互可以访问而且互不干扰。

     

    典型特征:虚拟机的IP地址需要与主机在同一网段,如果需要联网则网关与DNS需要与主机网卡一致。

     

    具体可以再通过下面的图示理解:

    1.2网络地址转换模式

     

    NAT模式的话相对来说应该是最熟悉的了。网络地址转换,既然有地址转换,肯定是发生了转变了。NAT模式就比较适合于IP资源紧缺,而且希望虚拟机可以联网的情况。

     

    NAT模式借助的是虚拟的NAT设备以及虚拟的DHCP服务器,从而使得虚拟机可以联网。如下图所示:

    1.3仅主机模式

     

    仅主机模式呢,其实说白了就是没有NAT设备的网络模式,仅使用的是VMnet1虚拟网卡与虚拟交换机连接,从而与虚拟机通信,而这种模式就实现了虚拟机与外网的隔离,即独立的一台服务器,只与主机互相通信。如下图所示:

    好的,现在大概了解了VMware中三种网络模式的原理了吧,现在继续来聊聊在docker中的网络模式。

     

    二、docker的网络模式

    2.1docker网络实现原理

     

    docker使用Linux桥接的方式,即在宿主机虚拟一个docker容器网桥(docker0),docker启动一个 容器时会根据docker网桥的网段分配给容器一个IP地址,这个地址就是容器ip,同时docker就是每个容器的默认网关。因此,同一个宿主机内的容器就可以通过容器ip地址直接通信。

     

    一般情况下,我们在安装和启动docker服务之后使用ifconfig命令即可查看到这个docker0的虚拟网桥设备:

    从上面显示的结果来看,默认的容器网关地址为172.17.0.1/16哈!当然loopback网卡是回环网卡,测试验证(TCP/IP连接),virtual bridge则是虚拟网桥(想想KVM【云原生】)

     

    当然,docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法通过ip地址直接寻址的,这就表明我们需要通过其他的方式来使外部网络可以访问容器,一般会通过访问宿主机ip结合容器的端口(并且端口一般是进行了端口映射,之后会讲述)进行容器的访问。

    2.2docker四种网络模式

    下面直接通过下面的表格来区分理解一下docker的四种网络模式

    docker网络模式

    配置

    说明

    host

     

    容器和宿主机共享Network namespace

    container模式

     

    容器和另外一个容器共享Network namespace

    none模式

     

    容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP

    bridge模式

     

    默认的模式

    其实启动docker服务之后,可以使用docker network相关命令控制管理网络,下面我们查看一下网络列表:(默认存在下面三个)下面逐一介绍(结合第一小节的内容来理解docker 中的网络原理)

    2.2.1host模式

    host模式结合VMware中的仅主机模式即可理解,通过下图表示一下:

    从上图可以看出,如果在启动容器后使用的是host模式,那么这个容器将不会获得一个独立的Network Namespace(网络命名空间),而是和宿主机系统共用一个Network Namespace。并且这就意味着容器将不会虚拟出自己的网卡以及配置自己的ip等,而是使用宿主机的ip以及端口。不过呢,在其他方面例如文件系统等还是与之隔离的。

    这种方式最大优势在于网络性能比较好但是缺点也很明显——网络的隔离性很弱。

     

    2.2.2container模式

    这个模式正如上述表格中的说明一般,是表示指定新创建的容器和已经存在的一个容器共享一个Network Namespace。当然这也表示新建的这个容器不会创建自己的网卡等相关操作,而是和与指定的容器共享这些资源。

     

    这种模式也和上述的host差不多,除了网络方面,其文件系统、进程列表等都是隔离的。

    参照下图:

    2.2.3none模式

     

    使用none模式,Docker容器拥有自己的Network Namespace,但是,不会对Docker容器进行任何的网络配置。这就表明这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。这种方式网络的隔离性最为彻底,即表明关闭了容器的网络功能,也无法访问这个容器。

    示意图如下:

    2.2.4bridge模式

    该模式就是我们在启动docker服务后默认的docker网络模式,其会在主机上创建一个名为docker0的虚拟网桥,这个主机上的所有启动的容器就会连接到这个虚拟网桥上。结合VMware中网桥模式原理,想想物理交换机的原理,就不难理解了。

    docker0子网中分配一个IP给容器使用,并设置docker0IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Dockerveth pair设备的一端放在新创建的容器中(这个veth对我们在OpenStack中见过,笔者觉得可以将之理解为一个桥梁,建立桥两岸的关系而存在的一种虚拟设备),并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。

     

    使用docker run -p 命令时,docker实际是在防火墙做了DNAT规则,实现端口转发的功能。

    下面通过一个节点的服务器结构图来理解:

     

    当然,这四种模式都不需要手动配置,真正需要配置的是自定义网络。

    三、docker网络控制相关命令配置

    上面已经给出了对应docker网络控制的命令docker network,下面具体看一下这个命令的具体说明:

    docker network的命令用法:

    Usage: docker network COMMAND

     

    Manage networks

     

    Commands:

    connect Connect a container to a network

    create Create a network

    disconnect Disconnect a container from a network

    inspect Display detailed information on one or more networks

    ls List networks

    prune Remove all unused networks

    rm Remove one or more networks

    3.1桥接命令设置

    我们通过尝试、排错和验证的方式来配置docker网络。

    因为需要NAT地址转换功能,所以需要开启防火墙,但是核心防护还是关了吧。

    我们尝试通过docker网桥方式(桥接)给一个容器设置一个ip地址(自定义的),下面看一下命令执行的结果

    首先,由于没有改镜像,所以会先拉取镜像之后创建以及尝试运行容器,但是会遇到报错,报错原因是因为用户自己设置的ip地址只适合于他们自己定义的网络。但是这并不影响镜像的获取与创建,我们尝试运行看看结果:

     

    很显然,结果告诉我们还是上述的原因导致了这个问题,好吧只能删除这个容器了。索性还原为初始化环境吧(其实可以去掉--network bridge就不会报错,但是设置的ip地址会不生效,可以自行尝试一下),我们不指定ip地址来试一下,顺便验证一下不加这个参数试试,最后还原为初始化状态后我们再通过自定义的方式来设置ip地址吧。

     

    进入容器查看ip地址

    那么首先我们需要创建一个自定义的子网段,并且给他一个名称,通过这个网段给对应的容器设置固定的ip地址。

     

    查看容器的状态,进入容器查看ip地址

    此时发现自定义的网络设置容器ip地址成功了。

  • LSI阵列卡设置阵列启动顺序
    2021-07-27

     

    1.创建多个阵列后选择左侧的virtual drives选项

     

    2.选择需要设置为下次启动的阵列,并勾选Set Boot Drive,点击Go即设置完成。

     

    3.返回首页,点击Exit退出,重启后则进入DG1阵列。

  • Centos7如何安装mysql
    2021-06-24

     

    Centos7如何安装mysql?本教程以Centos7为例

    本配置适用于centos7版本

    1.安装vim编辑工具

    yum install vim -y

    2.安装lrzsz上传工具

    yum install lrzsz -y

    安装完后可以使用rz命令上传所需要的软件工具(最好进入家目录/home在上传方便以后查找关于如何使用RZ上传文件,请到帮助中心查看标题为centos系统安装rz使用的教程

    3.指定环境版本和上传环境安装包

    mysql-5.6.21-linux-glibc2.5-x86_64.tar具体版本不一定,这边只是随机安装1个版本,具体看需要什么版本

    4.安装关联包

    yum -y install perl perl-devel
    
    yum -y install autoconf //此包安装时会安装Data:Dumper模块
    
    yum -y install libaio* // libaio库文件

    5.安装mysql5.6.21

    6.进入上传文件目录解压mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz文件

    [root@vt178m5c home]# tar -zxvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz

    7.移动解压出的mysql文件到/usr/local下重命名为mysql

    [root@vt178m5c home]# mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local/mysql

    8.添加mysql用户组与用户名

    [root@vt178m5c home]# groupadd mysql
    
    [root@vt178m5c home]# useradd -r -g mysql mysql

    9.变更mysql文件的用户权限为mysql

    [root@vt178m5c home]# chown -R mysql:mysql /usr/local/mysql

    10.创建数据库数据存放路径

    [root@vt178m5c home]# mkdir -p /data/mysql/data

    11.进入mysql解压文件

    [root@vt178m5c home]# cd /usr/local/mysql

    12.安装初始化数据库

    进入scripts文件

    [root@vt178m5c mysql]# cd scripts/

    初始化数据库,使数据库用户名为mysql 数据库安装目录为/usr/local/mysql 数据库数据存放路径为/data/mysql/data

    [root@vt178m5c scripts]# ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

    13.进入mysqlsupport-files文件中

    [root@vt178m5c scripts]# cd /usr/local/mysql/support-files

    14.复制my-default.cnf配置文件到/etc下覆盖掉系统默认的my.cnf配置文件

    [root@vt178m5c support-files]# cp my-default.cnf /etc/my.cnf

    如图提示是否覆盖输入y,回车

    15.复制mysql.server启动项脚本到/etc/init.d下命名为mysqld

    [root@vt178m5c support-files]# cp mysql.server /etc/init.d/mysqld

    16.修改启动项脚本中的两个变更值

    [root@vt178m5c support-files]# vim /etc/init.d/mysqld

    找到

    修改为

    basedir=/usr/local/mysql //basedir= 数据库程序文件存放地址

    datadir=/data/mysql/data //datadir=数据库数据存放位置

    17.配置数据库环境变量

    [root@vt178m5c support-files]# vim /etc/profile

    在末尾添加

    export PATH=$PATH:/usr/local/mysql/bin

    保存退出,更新环境变量

    [root@vt178m5c support-files]# source /etc/profile

    18.修改mysql配置文件my.cnf

    [root@vt178m5c support-files]# vim /etc/my.cnf

    找到

    添加

    basedir = /usr/local/mysql
    
    datadir = /data/mysql/data
    
    port = 3306
    
    server_id = 1
    
    socket = /tmp/mysql.sock
    
    log-error = /data/mysql/data/mysql-error.log

    19.开启mysql

    [root@vt178m5c support-files]# /etc/init.d/mysqld start

    mysql开启成功

    20.登入到mysql改密码

    [root@vt178m5c support-files]# mysql -uroot -p

    新安装mysql没有密码直接回车即可

    21.登入成功后设置mysql密码

    列:设置密码为liut@2018

    输入:

    update mysql.user set password=PASSWORD('liut@2018') where user='root';

    22.刷新权限表

    输入:flush privileges;

    退出:quit

    密码修改完成,下次登入mysql需要输入你设置的密码

  • apt安装软件提示dpkg错误
    2023-07-05

    1.报错信息 ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2023-07-05/1100267a34fac.jpeg) 在用apt-get安装软件包的时候遇到E: Sub-process /usr/bin/dpkg returned an error code (1)问题 2.解决办法: cd /var/lib/dpkg/ mv info/ info_bak mkdir info apt-get update apt-get -f install mv info/* info_bak/ rm -rf info mv info_bak info

  • Windows10永久关闭更新
    2022-07-21

    .Windows10更新界面

    开始菜单->设置->更新和安全,点击“查看可选更新”就可以查看到本机目前系统中存在那些更新。

     

    .服务管理

    1.按键盘组合键“Win+R”打开“运行”对话框在输入services.msc 后点击确定

    2.找到Windows update并双击,启动类型选择“禁用”,并停止服务

     

    .组策略

    系统有时候还是会启动更新。可以到组策略进行调整。

    1.按键盘组合键“Win+R”打开“运行”对话框在输入gpedit.msc 点击确定。

    2.计算机配置->管理模板->Windows组件->Windows更新->配置自动更新,双击“配置自动更新”选项,选择“已禁用”即可彻底关闭Windows10更新。

     

  • Windows10系统如何恢复源文件
    2021-07-13

    在使用windows10操作系统的时候会误删除一些重要的源文件,造成程序无法正常运行如何恢复误删的源文件,本文将针对此问题进行详细说明

     

    1.点击“开始”菜单,选择“Windows系统”右键“命令提示符”选择“更多”,然后点击“以管理员身份运行”。

    2. 依次输入命令“Dism/Online/Cleanup-Image/ScanHealth”,“Dism/Online/Cleanup-Image/CheckHealth”,“DISM/Online/Cleanup-image/RestoreHealth”

    3.输入完成后,重启设备,然后打开运行窗口,输入命令“sfc/SCANNOW”即可。

  • Windows server 2016如何取消定时更新
    2021-07-14

    本文简单介绍Windows server 2016如何取消定时更新。

     

     

    1.打开cmd,输入sconfig,出现如下图

    2.输入5回车,在输入M回车,点击确定完成关闭自动更新。

  • Windows7系统使用rasdial命令制作开机自动连接宽带
    2022-03-25

    1.右键桌面然后点击“新建”选择“文本文档”。

    2.在记事本中输入rasdial 宽带连接 ‘宽带账号 ‘宽带密码’”。

    3.另存为.bat文件存完以后如下

    4.讲宽带自动连接.bat添加到以下路径:“

    C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup”

    5.添加到路径下即可实现开机自动拨号连接宽带

  • Debian9如何升级为Debian10
    2023-10-12

    1.输入该命令按回车键:`apt-get update && apt-get upgrade -y` ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2023-10-12/151853f8226f4.jpeg) 2.输入该命令按回车键:`sed -i 's/stretch/buster/g' /etc/apt/sources.list` ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2023-10-12/1518560f33f23.jpeg) 3.输入该命令按回车键:`apt-get update && apt-get upgrade -y` ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2023-10-12/151858aba5c11.jpeg) 4.输入该命令按回车键:`apt-get dist-upgrade -y` ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2023-10-12/15190084a63eb.jpeg) 5.依照默认选项按回车键,完成后重启系统 ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2023-10-12/15190686937a6.jpeg) 6.输入该命令按回车键可查看当前系统版本:`cat /etc/os-release` ![img](https://public-1251015552.cos.ap-guangzhou.myqcloud.com/Uploads/image/2023-10-12/151908f574dd6.jpeg)

  • 华为路由器的DHCP服务配置
    2021-08-03

     

    本文将介绍如何在华为路由器上配置DHCP服务,实现自动向局域网内的主机分配IP地址的目的。拓扑如下:

    DHCP有两种配置方式,具体配置如下:

    1.按接口地址池的方式配置:

    [Huawei]interface g0/0/0
    
    [Huawei-GigabitEthernet0/0/0]ip add 192.168.1.1 255.255.255.0
    
    [Huawei-GigabitEthernet0/0/0]undo shutdown
    
    [Huawei-GigabitEthernet0/0/0]dhcp select interface
    
    [Huawei-GigabitEthernet0/0/0]dhcp server dns-list 192.168.20.50
    
    [Huawei-GigabitEthernet0/0/0]dhcp server excluded-ip-address 192.168.1.1
    
    [Huawei-GigabitEthernet0/0/0]dhcp server lease day 1

    2.按全局地址池的方式配置:

    [Huawei]dhcp enable
    
    [Huawei]ip pool qgtest
    
    [Huawei-ip-pool- qgtest]network 192.168.1.0 mask 24
    
    [Huawei-ip-pool- qgtest]gateway-list 192.168.1.1
    
    [Huawei-ip-pool- qgtest]lease day 1
    
    [Huawei]interface g0/0/0
    
    [Huawei-GigabitEthernet0/0/0]dhcp select global

热门标签

4008765417
扫码关注公众号