当前位置: 首页 > news >正文

Centos8.5.2111(1)之本地yum源搭建和docker部署与网络配置

由于后边可能要启动多个服务,避免服务之间相互干扰,本课程建议每个服务独立部署到一台主机上,这样做会导致资源占用过多,可能会影响系统的运行。服务器部署一般不采用GUI图形界面部署,而是采用命令行方式部署,主要是基于已下几方面的考虑。‌

‌               资源利用效率高‌:服务器主要用于处理大量的数据和请求,使用图形化界面会消耗较多的系统资源,降低服务器的性能。相比之下,命令行界面更加轻量级,能够更好地利用服务器的资源,提高运行效率‌。

               ‌稳定性和可靠性‌:服务器为了提供稳定和可靠的服务而存在,图形化界面容易受到各种窗口操作和系统进程的影响,增加了系统的不稳定性。而命令行界面相对简洁,减少了不必要的干扰和风险,有利于确保服务器的稳定运行‌。

‌               远程管理和自动化操作‌:服务器通常需要远程管理和自动化操作,命令行界面可以通过SSH等远程登录协议进行远程管理,使管理员可以方便地远程进行配置、监控和故障排除。同时,命令行界面也更适合编写自动化脚本和批处理任务,从而提高运维效率‌。

‌               安全性考虑‌:服务器面临更多的网络攻击和威胁,图形化界面相对来说更容易受到入侵和破坏。而命令行界面相对简化,减少了攻击面,提高了服务器的安全性‌。

         因此,本课程先采用最小化安装,根据需要再添加各种软件工具。

         另外,由于计算机硬件更新很快,各种软件平台占用的资源越来越多,一台机器很难同时启动多台服务器,而且启动起来速度也受到影响。为此,本课程拟采用Docker容器部署各种服务。

1 CentOS 8的最小化安装

         Linux8的安装,我们采用下载ISO格式的安装包到本地,用VMwere Workstations(建议v14以上)安装成虚拟机。如果用户不做干预,默认情况下会自动安装成GUI模式,这样会占用大量的硬盘空间,运行时要占用跟多的硬件资源,速度也大大受到影响。采用下面的方法,才能顺利进行最小化安装。由于在命令行下,拷贝编辑等功能不太方便,我们可以采用SSH工具登录。这里的基本工具选用MobaXterm,该工具除了可以方便拷贝粘贴外,还可以拖拽方式实现虚拟机与宿主机间的文件共享。

1.1 准备工具

1) VMware Workstations 17

VMware 17密钥:MC60H-DWHD5-H80U9-6V85M-8280D

官方直接下载

https://download3.vmware.com/software/WKST-1750-WIN/VMware-workstation-full-17.5.0-22583795.exe

2)MobaXterm

https://download.mobatek.net/2412024041614011/MobaXterm_Installer_v24.1.zip

3)下载CentOS8

图 1.1 阿里网站下载

下载地址

https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso

先安装VMware Workstation 17和MobaXterm。

1.2 最小化安装

创建虚拟机按下面步骤实施即可。

图 1.2

图 1.2

网络设置为桥接或NAT都可以,以后可以根据需要进行更换或增减。

图 1.3

启动开始安装

图 1.4

图 1.5

按编号顺序设置

图 1.6

网络点关闭字体开启网络:这时以太网会显示已连接网络

图 1.7

只有再上一步网络连接后这里的安装源才可以编辑,这里选择http://,右边的输入框手动输入阿里云的镜像源mirrors.aliyun.com/centos/8/BaseOS/x86_64/os

图 1.8

直接选择最小安装即可,其他的都不需要,即便是做服务器其他安装也没啥用,当然如果你用容器的话可以勾选上这里默认的容器管理是podman而不是docker,如果要用docker这里不用勾选免得你后面还要卸载。

图 1.9

一路向下完成安装重启。

最小化安装拥有的外部命令

yum          (有这个基本缺什么就能装什么)
ssh   (方便远程连接)
curl          (方便下载远程文件)

ping          百度查看连通性

ip a           查看ip地址和Mac地址

yum源有问题,我们后边再讲解搭建本地yum源。

1.3 基本网络配置

1)启动网卡,并通过DHCP获取ip地址

         安装时,网络连接选择nat连接,通过主机物理网卡和外网联通。安装完系统重启后,查看ip地址,发现没有分配ip地址,也无法ping通外网。下面进行基本的为了设置。到/etc/sysconfig/network-scripts/目录下查看

[root@7a98d431bf16 /]# cd /etc/sysconfig/network-scripts/

[root@7a98d431bf16 network-scripts]# ls

ifcfg-ens3

         查看一下网卡配置文件ifcfg-ens3

root@7a98d431bf16 network-scripts]#vi ifcfg-ens3

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=dhcp

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=ens3

UUID=534629aa-e625-4e65-b3d3-f50677ea4ac3

DEVICE=ens3

ONBOOT=no

把最后一行“ONBOOT=no”改为“ONBOOT=yes”,然后重启网络并查看ip、测试和外网连通性。

[root@7a98d431bf16 /]systemctl restart NetworkManager.service

[root@7a98d431bf16 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

24: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

    link/ether 02:42:c0:a8:00:d2 brd ff:ff:ff:ff:ff:ff link-netnsid 0

    inet 192.168.0.210/24 brd 192.168.0.255 scope global eth0

       valid_lft forever preferred_lft forever

[root@7a98d431bf16 ~]# ping www.baidu.com -c 2

PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data.

64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=1 ttl=50 time=30.5 ms

64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=2 ttl=50 time=28.7 ms

--- www.a.shifen.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1005ms

rtt min/avg/max/mdev = 28.737/29.639/30.542/0.918 ms

可见这样网卡得到启动,并获得了ip地址,也能和外网连通。

为了后边输入命令省事,安装命令补全:

[root@7a98d431bf16 ~]# yum install bash -y

Failed to set locale, defaulting to C.UTF-8

Last metadata expiration check: 0:08:13 ago on Wed Sep 18 04:15:50 2024.

Package bash-4.4.19-14.el8.x86_64 is already installed.

Dependencies resolved.

==================================================================================================

 Package          Architecture       Version                   Repository                    Size

==================================================================================================

Upgrading:

 bash             x86_64             4.4.20-2.el8              LocalRepo_BaseOS             1.5 M

Transaction Summary

==================================================================================================

Upgrade  1 Package

Total size: 1.5 M

Downloading Packages:

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :                                                                          1/1

  Upgrading        : bash-4.4.20-2.el8.x86_64                                                 1/2

  Running scriptlet: bash-4.4.20-2.el8.x86_64                                                 1/2

  Cleanup          : bash-4.4.19-14.el8.x86_64                                                2/2

  Running scriptlet: bash-4.4.19-14.el8.x86_64                                                2/2

  Verifying        : bash-4.4.20-2.el8.x86_64                                                 1/2

  Verifying        : bash-4.4.19-14.el8.x86_64                                                2/2

Upgraded:

  bash-4.4.20-2.el8.x86_64

Complete!

[root@7a98d431bf16 ~]# yum install bash-completion -y

Failed to set locale, defaulting to C.UTF-8

Last metadata expiration check: 0:08:47 ago on Wed Sep 18 04:15:50 2024.

Dependencies resolved.

==================================================================================================

 Package                     Architecture    Version              Repository                 Size

==================================================================================================

Installing:

 bash-completion             noarch          1:2.7-5.el8          LocalRepo_BaseOS          274 k

Installing dependencies:

 libpkgconf                  x86_64          1.4.2-1.el8          LocalRepo_BaseOS           35 k

 pkgconf                     x86_64          1.4.2-1.el8          LocalRepo_BaseOS           38 k

 pkgconf-m4                  noarch          1.4.2-1.el8          LocalRepo_BaseOS           17 k

 pkgconf-pkg-config          x86_64          1.4.2-1.el8          LocalRepo_BaseOS           15 k

Transaction Summary

==================================================================================================

Install  5 Packages

Total size: 379 k

Installed size: 1.0 M

Downloading Packages:

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :                                                                          1/1

  Installing       : pkgconf-m4-1.4.2-1.el8.noarch                                            1/5

  Installing       : libpkgconf-1.4.2-1.el8.x86_64                                            2/5

  Installing       : pkgconf-1.4.2-1.el8.x86_64                                               3/5

  Installing       : pkgconf-pkg-config-1.4.2-1.el8.x86_64                                    4/5

  Installing       : bash-completion-1:2.7-5.el8.noarch                                       5/5

  Running scriptlet: bash-completion-1:2.7-5.el8.noarch                                       5/5

  Verifying        : bash-completion-1:2.7-5.el8.noarch                                       1/5

  Verifying        : libpkgconf-1.4.2-1.el8.x86_64                                            2/5

  Verifying        : pkgconf-1.4.2-1.el8.x86_64                                               3/5

  Verifying        : pkgconf-m4-1.4.2-1.el8.noarch                                            4/5

  Verifying        : pkgconf-pkg-config-1.4.2-1.el8.x86_64                                    5/5

Installed:

  bash-completion-1:2.7-5.el8.noarch                  libpkgconf-1.4.2-1.el8.x86_64

  pkgconf-1.4.2-1.el8.x86_64                          pkgconf-m4-1.4.2-1.el8.noarch

  pkgconf-pkg-config-1.4.2-1.el8.x86_64

Complete!

安装时显示“Failed to set locale, defaulting to C.UTF-8”,重新安装语言包:

[root@7a98d431bf16 ~]# yum install glibc-langpack-zh yum install glibc-langpack-en

2)设置固定ip

如果需要把ip地址设置为固定ip,只需把ifcfg-ens3配置文件修改为:

root@7a98d431bf16 network-scripts]#vi ifcfg-ens3

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=ens3

UUID=534629aa-e625-4e65-b3d3-f50677ea4ac3

DEVICE=ens3

ONBOOT=no

IPADDR=192.168.0.100

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

DNS1=114.114.114.114

用systemctl restart NetworkManager.service重启网络,这样就变成固定ip了。

1.4 本地yum源架设

Centos 8的停止维护EOL(End of Life)2024年5月31日,centos7为2024年6月30日,之后默认方式安装更新软件会受到影响。因此需要搭建本地的yum源。

1)虚拟机挂载光驱

图 1.10

创建挂载目录

mkdir /mnt/cdrom

挂载iso光驱到挂载目录cdrom

①临时挂载

mount -t iso9660 /dev/cdrom  /mnt/cdrom

②永久挂载

sudo vi /etc/fstab

/dev/sr0 /mnt/cdrom auto defaults 0 0

查看

[root@wuzz ~]# lsblk

图 1.11

可以看见,光盘已经挂载上去了。

2)修改repo文件

/etc/yum.repos.d目录下所有*.repo文件删除,并创建local.repo

[root@wuzz ~]#rm -rf *.repo

[root@wuzz ~]#vi local.repo

#Base OS

[LocalRepo_BaseOS]

name=LocalRepo_BaseOS

baseurl=file:///mnt/dvd/BaseOS

gpgcheck=0

gpgkey=file:///mnt/dvd/BaseOS/RPM-GPG-KEY-redhat-release

enabled=1

#App Stream

[LocalRepo_AppStream]

name=LocalRepository_AppStream

baseurl=file:///mnt/dvd/AppStream

enabled=1

gpgcheck=0

gpgkey=file:///mnt/dvd/AppStream/RPM-GPG-KEY-redhat-beta

参数说明:

[LocalRepo] # 该部分的名称

name # 存储库的名称

baseurl # 包裹的位置

enabled # 启用存储库

gpgcheck # 启用安全安装(gpgcheck是可选的(如果设置gpgcheck = 0,则无需提及gpgkey)

gpgkey # 密钥的位置

清除本地缓存并重建。

[root@wuzz ~]#yum clean all

[root@wuzz ~]#yum makecache

措施一下,安装net-tools:

[root@7a98d431bf16 ~]# yum install net-tools -y

Last metadata expiration check: 0:56:16 ago on Wed 18 Sep 2024 04:15:50 AM UTC.

Dependencies resolved.

==================================================================================================

 Package           Architecture   Version                          Repository                Size

==================================================================================================

Installing:

 net-tools         x86_64         2.0-0.52.20160912git.el8         LocalRepo_BaseOS         322 k

Transaction Summary

==================================================================================================

Install  1 Package

Total size: 322 k

Installed size: 942 k

Downloading Packages:

Running transaction check

Transaction check succeeded.

Running transaction test

Transaction test succeeded.

Running transaction

  Preparing        :                                                                          1/1

  Installing       : net-tools-2.0-0.52.20160912git.el8.x86_64                                1/1

  Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64                                1/1

  Verifying        : net-tools-2.0-0.52.20160912git.el8.x86_64                                1/1

Installed:

  net-tools-2.0-0.52.20160912git.el8.x86_64

至此,搭建本地yum源完成。

2 Docker部署

2.1 安装docker

         安装辅助工具

yum install -y yum-utils device-mapper-persistent-data lvm2 wget curl

如果安装yum-utils-4.0.21-3.el8.noarch.rpm出问题,直接通过ali云上安装:

rpm -ivh --nodeps http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/yum-utils-4.0.21-3.el8.noarch.rpm

安装dockers

dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

dnf install -y docker-ce docker-ce-cli containerd.io

systemctl start docker

systemctl enable docker

安装docker-compose 现在版本是v2.29.3

curl -L "https://github.com/docker/compose/releases/download/v2.29.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

修改二进制文件的执行权限:

sudo chmod +x /usr/local/bin/docker-compose

验证安装是否成功:

docker-compose --version

查看docker版本号:

[root@wuzz ~]# docker version

Client: Docker Engine - Community

 Version:           26.1.3

 API version:       1.45

 Go version:        go1.21.10

 Git commit:        b72abbb

 Built:             Thu May 16 08:34:39 2024

 OS/Arch:           linux/amd64

 Context:           default

Server: Docker Engine - Community

 Engine:

  Version:          26.1.3

  API version:      1.45 (minimum version 1.24)

  Go version:       go1.21.10

  Git commit:       8e96db1

  Built:            Thu May 16 08:33:34 2024

  OS/Arch:          linux/amd64

  Experimental:     false

 containerd:

  Version:          1.6.32

  GitCommit:        8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89

 runc:

  Version:          1.1.12

  GitCommit:        v1.1.12-0-g51d5e94

 docker-init:

  Version:          0.19.0

  GitCommit:        de40ad0

2.2 设置docker加速(须经常更换)

[root@wuzz ~]# cat /etc/docker/daemon.json

{

  "registry-mirrors": [

        "https://register.liberx.info",

        "https://dockerpull.com",

        "https://docker.anyhub.us.kg",

        "https://dockerhub.jobcher.com",

        "https://dockerhub.icu",

        "https://docker.awsl9527.cn"]

}

重启

udo systemctl daemon-reload

sudo systemctl restart docker

措施一下,拉取centos最新版本

图 1.12

3 网络配置与管理

Linux服务器的网络配置是Linux系统管理的底层建筑,没有网络配置,服务器之间就不能相互通信。网络配置通常包括主机名,IP地址,子网掩码,默认网关,DNS服务器等,本章将介绍Linux网路配置的基础知识。

3.1 命令行

NetworkManager是管理Linux系统的工具,我们通常通过它来设置IP地址和子网掩码以及查看网卡相关配置等信息。以下是关于工具的一些关键词:
(1) 设备(device)即网络接口,设备也可以是网卡等。
(2) 连接(connection)是设备设置信息的集合,是对网络接口的配置。
(3) 连接与设备绑定后即表示该设备已完成配置。
(4) 一个网络接口可以有多个连接配置,但同时只能有一个连接生效。

使用NetworkManager命令进行配置

1 查看网络信息:

命令

说明

nmcli dev status

显示所有网络设备(网卡)的状态

nmcli dev show

设备名 显示某个网络设备(网卡)的状态

nmcli con status

显示所有网络连接的状态概述

nmcli con show

连接名 显示某个网络连接的状态概述

nmcli con show --active

仅列出活动的网络连接

nmcli dev status

1-查看网卡配置

ifconfig

2-查看网卡配置

ip addr

3-查看网卡配置

2 启用和禁用连接,设备:

命令

说明

nmcli con reload

重启网络连接

nmcli con up

连接名 开启某个网络连接

nmcli con down

连接名 禁用配置 (一个网卡可以有多个配置)

nmcli dev disconnect

连接名 禁用网卡

nmcli dev connect

连接名 启用网卡

3 对设备(网卡)进行配置:

命令

说明

nmcli con add con-name 连接名(YY type ethernet ifname 设备名(XX

为名为XX的网络设备(网卡)添加一个名为YY的新连接。它的类型为Ethernet,它的IP地址为自动分配。

nmcli con add con-name 连接名 type ethernet ifname 设备名 ip4 192.168.1.1/24 gw4 192.168.1.254

为名为XX的网络设备(网卡)添加一个名为YY的新连接。它的类型为Ethernet,它的IP地址以静态方式配置。

nmcli con del 连接名

删除名为XX的连接

nmcli con mod XX connection.autocon-nect yes

将名为XX网卡的IP地址划分方式修改为自动

nmcli con mod XX ipv4.dns 192.168.1.1

修改DNS192.168.1.1

nmcli con mod XX +ipv4.dns 192.168.1.2

添加DNS 192.168.1.2

nmcli con mod XX -ipv4.dns 192.168.1.2

删除DNS 192.168.1.2

nmcli con mod XX ipv4.address 192.168.1.1/24 gw4 192.168.1.254

修改IP地址和默认网关

nmcli con mod XX +ipv4.address 192.168.1.2/24

添加多个IP,地址为192.168.1.2

3.2 配置文件

在Linux系统中,修改设备(网卡)的IP还能通过在网卡配置文件中实现。网卡的配置文件位于/etc/sysconfig/network-scripts/ 目录下,文件名格式为ifcfg-XX,其中XX为网卡名称。

配置网卡为静态IP
(1) 首先切换到/etc/sysconfig/network-scripts/ 目录下。
(2) 使用vim编辑器修改网卡文件ifcfg-XX,将需要配置的选项写入并保存。

网卡配置文件的相关参数(默认)

参数值

说明

TYPE=Ethernet

网卡类型:为以太网

PROXY_METHOD=none

代理方式:关闭状态

BROWSER_ONLY=no

只否只是浏览器:否

BOOTPROTO=dhcp

网卡的引导协议:DHCP

DEFROUTE=yes

是否启用默认路由:是

IPV4_FAILURE_FATAL=no

是否开启IPV4致命错误检测:否

NAME=ens33

网卡物理设备名称

UUID=xxxx

通用唯一识别码

DEVICE=ens33

网卡设备名称, 必须和 NAME 值相同

ONBOOT=no

是否开机启动:

IPV6INIT=yes

IPV6是否自动初始化:

IPV6_DEFROUTE=yes

IPV6是否可以为默认路由:

IPV6_FAILURE_FATAL=no

是不开启IPV6致命错误检测:否

IPV6_ADDR_GEN_MODE=stable-privacy IPV6

地址生成模型:stable-privacy

3 修改具体配置项为以下内容:

命令

说明

BOOTPROTO=static(或none

设置网卡引导协议为 静态

ONBOOT=yes

设置网卡启动方式为 开机启动 并且可以通过系统服务管理器 systemctl 控制网卡

IPADDR=192.168.1.1

配置静态IP地址

NETMASK=255.255.255.0

配置IPv4子网掩码

GATEWAY=192.168.1.254

配置IPV4网关

若网卡有多个IP,则应修改以下内容:

命令

说明

IPADDR0=192.168.1.1

IP-1

NETMASK0= 255.255.255.0 PREFIX0= 24

子网掩码

IPADDR1=192.168.1.2

IP-2

NETMASK1= 255.255.255.0 PREFIX1= 24

子网掩码

……

(4) 修改完网卡配置后,需要执行systemctl restart NetworkManager.service命令重启网络服务,使新配置生效。

3.3 命令行启动图形画界面进行网卡IP配置

1 在命令行终端输入命令:

[root@localhost ~]$ nmtui

2 选中【Edit a connection】,如图1.13所示。

图 1.13

3 选中要编辑的网卡,按下键盘“Enter”键,如图1.14所示。

图 1.14

4 选择【Manual】,修改IP地址等信息,如图1.15所示。

图 1.15

5 配置完成后回车【OK】,如图1.16所示。

图 1.16

6 回车【Back】返回,如图1.17所示。
 

图 1.17

7 回车【Activate a connection】激活刚才的网卡配置,如图1.18所示。

图 1.18

8 确定要激活的网卡,回车【Activate】(有*的网卡表示已激活),如图1.19所示。

图 1.19

3.4 内网与外网多网卡配置

         数据中心DC中一般都是多重网络,一个网络用于外连,另外的网络用于内部各个服务器和终端的数据交换、传递心跳等信息。下面我们在虚拟机上配置两个网段,一个网络连外网,另一个做内部网络使用。如图1.20所示。

图 1.20

在第1章中我们安装虚拟机时选择的是通过宿主机物理网卡以NAT的方式连接外网的,所以虚拟机本身就具备一个通过NAT连接外网的网段192.168.0.0/24。下面只需添加一个网卡用于虚拟机内网连接就可以了。为了不影响其他应用程序的配置,采用给宿主机添加一块虚拟网卡作为虚拟机内网连接。

①添加虚拟网卡MS KM-TEST环回

Win+Ràhdwwiz

图 1.21

选择手动

图 1.22

选择网络适配器

图 1.23

选择Microsoft KM-TEST环回适配器

图 1.24

②配置内网参数

Win+Ràncpa.cpl,配置刚才添加的虚拟网卡KM-TEST

图 1.25

按照规划的内网ip配置,同时填写当地的DNS。

图 1.26

③在VMware workstation上配置网络

VMware workstation上“虚拟机à设置”如图1.27所示,在第1章最小安装只有一张网NAT①,选中该网卡,点击②“添加”,就会出现网络适配器2,选中该网卡,右边④择自定义处选VMnet0

图 1.27

按照上面步骤,再添加一张网卡,选择VMnet1。

VMware workstation上“虚拟机à编辑”,选择“虚拟网络编辑器”,如图1.28所示,编辑器里有三张网卡,NAT略过,双击VMnet0选择桥接到物理网卡;然后双击VMnet1桥接到KM-TEST环回网卡。

注意:这三张网卡要分别位于不同的网段:

NAT          192.168.137.0/24

VMnet0   192.168.0.0/24    物理网卡连接的DHCP自动获取

VMnet1   100.100.100.0/24   规划的内网

图 1.28

④启动虚拟机,查看ip地址,此时可以看见虚拟网卡上三张网卡ens33、ens36、ens37。ens33是NAT,在1.3节中通过DHCP获得了ip地址。可以按照1.3和3.3节的方法,给ens36、ens37设置固定IP。这里我们将其设置为192.168.0.100/24和100.100.100.200/24,步骤略。

图 1.29

3.5 在虚拟机中生成本课程所需的10个容器,为了便于其他主机访问容器,每个容器的网络以macvlan的方式与vmnet0桥接,以后需要时再给每个容器添加一张内网网卡,连接到100.100.100.0/24网段上。

规划各个服务器的IP地址及IP,如表1-1所示。

表1-1 生成容器规划

功能

ip

连接网络

端口

DHCP

192.168.0.201/100.100.100.201

ens36 wuzzphy/ens37 nei

67-68

DNS

192.168.0.202/100.100.100.202

ens36 wuzzphy/ens37 nei

53

NFS

192.168.0.203/100.100.100.203

ens36 wuzzphy/ens37 nei

2049

SAMBA

192.168.0.204/100.100.100.204

ens36 wuzzphy/ens37 nei

139      445

APACHE

192.168.0.205/100.100.100.205

ens36 wuzzphy/ens37 nei

80

FTP

192.168.0.206/100.100.100.206

ens36 wuzzphy/ens37 nei

20    21

EMAIL

192.168.0.207/100.100.100.207

ens36 wuzzphy/ens37 nei

smtp25   pop3  110

PROXY

192.168.0.208/100.100.100.208

ens36 wuzzphy/ens37 nei

TFTP

192.168.0.209/100.100.100.209

ens36 wuzzphy/ens37 nei

69

TELNET

192.168.0.210/100.100.100.210

ens36 wuzzphy/ens37 nei

23

按照下面的格式,分别生成10个容器:

docker run -itd -e “container=docker” --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup -v /wutool:/wutool -v /mnt:/mnt -v /etc/yum.repo.d/:/etc/yum.repo.d/ --net wuzzphy --ip 192.168.0.201 --name dhcp centos /usr/sbin/init

-i                Keep STDIN open even if not attached交互

-t                Allocate a pseudo-TTY               虚终端显示

-d                Run container in background and print container ID

-e                环境设置

--privileged=true 指定容器具备特权

-v                卷映射,和宿主机共享卷

--net             Connect a container to a network

--ip              指定一个静态的ip地址

--name            容器名称

-p                主机和容器间端口映射

/usr/sbin/init    启动容器之后可以使用systemctl方法

下面是容器操作的常用方法

#docker search                        //搜索镜像(现在无法正常使用,估计要钱)

#docker pull                          //拉取镜像

#docker ps -a                         //查看容器

#exit                                  //退出并关闭容器

#ctl+p+q                              //退出容器,保留容器进程

#docker start nfs                   //启动容器nfs

#docker exec -it nfs /bin/bash   //进入启动的容器nfs

#docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=ens36 wuzzphy

#docker network ls                 //查看网卡

#docker network connect nei nfs  //将网卡连接到nfs上

# history | grep 'docker run’    //查看历史上生成过哪些容器

#docker rm samba -f                //强制删除samba容器

################

至此,我们完成了本地yum的搭建、多重网络部署、docker的安装及初步的镜像拉取等,为过后的服务器部署打下了基础。

我为啥要用docker?主要是几台机器都是老爷机,如果用GUI的虚拟机来搭建各种服务的话,必定会拖不动。而用最小化安装的Centos8+docker的方式,可以秒级启动20个服务,虚拟主机只要2核、内存只要6G就足够了。目前我唯一没有实现的是docker容器下的DHCP及其中继的搭建,想了很多方法,都没有好的解决方案。可能是对docker容器连网的特性没有掌握好。该实验暂时我就用传统的虚拟机来做。敬请期待!

相关文章:

Centos8.5.2111(1)之本地yum源搭建和docker部署与网络配置

由于后边可能要启动多个服务&#xff0c;避免服务之间相互干扰&#xff0c;本课程建议每个服务独立部署到一台主机上&#xff0c;这样做会导致资源占用过多&#xff0c;可能会影响系统的运行。服务器部署一般不采用GUI图形界面部署&#xff0c;而是采用命令行方式部署&#xff…...

基于SSM+小程序的自习室选座与门禁管理系统(自习室1)(源码+sql脚本+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 1、管理员实现了首页、基础数据管理、论坛管理、公告信息管理、用户管理、座位管理等 2、用户实现了在论坛模块通过发帖与评论帖子的方式进行信息讨论&#xff0c;也能对账户进行在线充值…...

支付宝远程收款api之小荷包跳转码

想要生成小荷包跳转码的二维码&#xff0c;需要进行以下步骤&#xff1a; 1、开通支付宝小荷包的收款功能权限 2、获取支付宝的小荷包收款码和支付宝账户的UID已经手机号等相应信息&#xff08;可能会有变动&#xff09; 3、可能需要一定的代码基础&#xff0c;讲所需信息填…...

STM32 F1移植FATFS文件系统 USMART组件测试相关函数功能

STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能 文章目录 STM32 F1移植FATFS文件系统 使用USMART调试组件测试相关函数功能前言部分主要相关代码# USMART介绍1. mf_scan_files 扫描磁盘文件2. mf_mount 挂载磁盘3. mf_open 打开文件4. mf_read 读数据内容5. mf…...

YOLOv8改进 | 融合篇,YOLOv8主干网络替换为MobileNetV3+CA注意机制+添加小目标检测层(全网独家首发,实现极限涨点)

原始 YOLOv8 训练结果: YOLOv8 + MobileNetV3改进后训练结果: YOLOv8 + MobileNetV3 + CA 注意机制 + 添加小目标检测层改进后训练结果(极限涨点): 摘要 小目标检测难点众多,导致很多算法对小目标的检测效果远不如大中型目标。影响算法性能的主要原因如下:第一,小目…...

深入探索机器学习中的目标分类算法

在当今数据驱动的世界中&#xff0c;机器学习&#xff08;Machine Learning, ML&#xff09;正逐渐成为解决问题的重要工具。在众多机器学习任务中&#xff0c;目标分类&#xff08;Classification&#xff09;算法尤其受到关注。本文将深入探讨目标分类算法的基本概念、常见类…...

一文上手SpringSecurity【七】

之前我们在测试的时候,都是使用的字符串充当用户名称和密码,本篇将其换成MySQL数据库. 一、替换为真实的MySQL 1.1 引入依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</v…...

深圳龙链科技:全球区块链开发先锋,领航Web3生态未来

【深圳龙链科技】是全球领先的Web3区块链技术开发公司&#xff0c;专注于为全球客户提供创新高效的区块链解决方案。 深圳龙链科技由币安资深股东携手香港领先的Web3创新枢纽Cyberport联袂打造&#xff0c;立足于香港这一国际金融中心&#xff0c;放眼全球&#xff0c;汇聚了华…...

手写代码,利用 mnist 数据集测试对比 kan 和 cnn/mlp 的效果

你好呀&#xff0c;我是董董灿。 kan 模型火了一段时间&#xff0c;很多人从理论的角度给出了非常专业的解读&#xff0c;基本结论是&#xff1a;从目前来看&#xff0c;kan 很难替代 mlp 成为一个更加经典的模型结构。 我这里就不从理论方面进行回答了&#xff0c;直接给出一…...

基于Java+SQL Server2008开发的(CS界面)个人财物管理系统

一、需求分析 个人财务管理系统是智能化简单化个人管理的重要的组成部分。并且随着计算机技术的飞速发展&#xff0c;计算机在管理方面应用的旁及&#xff0c;利用计算机来实现个人财务管理势在必行。本文首先介绍了个人财务管理系统的开发目的&#xff0c;其次对个人财务管理…...

15年408计算机网络

第一题&#xff1a; 解析&#xff1a; 接收方使用POP3向邮件服务器读取邮件&#xff0c;使用的TCP连接&#xff0c;TCP向上层提供的是面向连接的&#xff0c;可靠的数据传输服务。 第二题&#xff1a; 解析&#xff1a;物理层-不归零编码和曼彻斯特编码 编码1&#xff1a;电平在…...

C++ const关键字

const 1. 修饰变量&#xff08;包括函数参数 函数返回值&#xff09; const int v0 10; v0 0; // error 不能修改const修饰的变量 2. 修饰指针 int v1 10; int v2 20; int v3 30; 2.1 常量指针 const 在指针左边&#xff0c;左定值&#xff0c;即不能通过指针修改该…...

python爬虫案例——腾讯网新闻标题(异步加载网站数据抓取,post请求)(6)

文章目录 前言1、任务目标2、抓取流程2.1 分析网页2.2 编写代码2.3 思路分析前言 本篇案例主要讲解异步加载网站如何分析网页接口,以及如何观察post请求URL的参数,网站数据并不难抓取,主要是将要抓取的数据接口分析清楚,才能根据需求编写想要的代码。 1、任务目标 目标网…...

LeetCode416:分割等和子集

题目链接&#xff1a;416. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; 代码如下&#xff1a; class Solution { public:bool canPartition(vector<int>& nums) {int m nums.size();vector<int> dp(10010, 0);int sum 0;for(int i 0; i < m;…...

自定义异常注解处理框架

首先我们定义两个用于检验string和List的注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** author caiyi.yu* 自定义非空判断*/ Target(Elemen…...

【小程序】微信小程序课程 -3 快速上手之常用方法

目录 1、 对话框 1.1 模态对话框 1.2 消息对话框 2、 存储 2.1 同步 2.1.1 同步保存数据 2.1.2 同步获取数据 2.1.3 同步删除数据 2.1.4 同步清空数据 2.2 异步 2.2.1 异步保存数据 2.2.2 异步获取数据 2.2.3 异步删除数据 2.2.4 异步清空数据 3、 上拉加载更多…...

iOS 小组件

基本知识 时间轴 小组件通过AppIntentTimelineProvider进行 UI 刷新 struct Provider: AppIntentTimelineProvider {func placeholder(in context: Context) -> SimpleEntry {// 添加占位的&#xff08;选择添加的时候使用&#xff09;// todo}func snapshot(for configu…...

【2.使用VBA自动填充Excel工作表】

目录 前言什么是VBA如何使用Excel中的VBA简单基础入门控制台输出信息定义过程&#xff08;功能&#xff09;定义变量常用的数据类型Set循环For To 我的需求开发过程效果演示文件情况测试填充源文件测试填充目标文件 全部完整的代码sheet1中的代码&#xff0c;对应A公司工作表Us…...

算法记录——链表

2.链表 2.1判断是否是回文链表 1.方法一&#xff1a;利用栈反转链表 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode…...

EasyExcel实现百万数据批量导出

当数据量比较大时&#xff0c;例如数据量达到百万级&#xff0c;传统的一次读取到内存中在写入excel文件的方法便不再适用了&#xff0c;可能会导致内存溢出&#xff1b;而且一次性将数据写入一张sheet工作表也不太好。 但我们可以选择数据分片的方式批量写入多个工作表。 测试…...

兆易GD32E508的SHRTIM配置 主从定时器 产生2对相位可调互补PWM 带死区

如有技术问题及技术需求请加作者微信! GD32E5系列MCU是基于Arm Cortex-M33处理器的32位通用微控制器。Cortex-M33处理器基于Armv8架构,处理器主频最高可达180MHz,支持强大的可扩展指令集,包括通用数据处理I/O控制任务、增强的数据处理位域操作、DSP和浮点运算器(FPU)。 GD…...

数据归组工具

利用C#将数据 [ {"name":"A","fzh":1}, {"name":"A","fzh":2}, {"name":"A","fzh":3}, {"name":"B","fzh":4}, {"name":"B",&…...

JavaScript 中的闭包的形成及使用场景

JavaScript 中的闭包 闭包&#xff08;Closure&#xff09; 是 JavaScript 中一个非常重要且独特的概念&#xff0c;它指的是 函数能够记住并访问其词法作用域内的变量&#xff0c;即使这个函数在其词法作用域之外执行。 通俗地说&#xff0c;闭包是 一个函数可以“记住”它在…...

后端返回内容有换行标识,前端如何识别换行

<br/>的话 用 v-html \n 可以用css样式 white-space: pre-wrap 后端返回结果 前端...

服务器被挂马,导致网站首页被更改怎么解决

当服务器被挂马并导致网站首页被篡改时&#xff0c;说明服务器或网站的安全性遭到破坏。为了修复并防止未来的攻击&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 立即下线网站 目的&#xff1a;防止恶意软件进一步传播&#xff0c;保护用户数据和防止攻击者继续对网…...

Android 利用OSMdroid开发GIS

1、地址 Github地址&#xff1a;https://gitee.com/mirrors/osmdroid Git地址&#xff1a; GitCode - 全球开发者的开源社区,开源代码托管平台 Git下载包地址&#xff1a;Releases osmdroid/osmdroid GitHub 新建项目 osmdroid在线&#xff1a; &#xff08;1&#xff09…...

一文上手skywalking【上】

一、skywalking预览 1.1 skywalking 概述 ​ Apache SkyWalking, 适用于分布式系统的应用程序性能监控工具&#xff0c;专为微服务、云原生和基于容器的 &#xff08;Kubernetes&#xff09; 架构而设计。官方地址: https://skywalking.apache.org/ 适用于分布式系统的应用程…...

【JavaScript】JQuery基础知识及应用

一、JQuery的导入方法 https://editor.csdn.net/md/?articleId132214798 二、JQuery介绍 JQuery(JQ)&#xff1a;JS的一个类库&#xff08;方法库&#xff1a;包含了大量的、有助于项目开发的属性和方法&#xff09; 第一代版本1.xx.xx: 1.11.3 兼容所有浏览器的&#xff0…...

初始爬虫9

1.元素定位后的操作 “find_element“仅仅能够获取元素&#xff0c;不能够直接获取其中的数据&#xff0c;如果需要获取数据需要使用以下方法”。下面列出了两个方法&#xff1a; 获取文本 element.text 通过定位获取的标签对象的 text 属性&#xff0c;获取文本内容 获取属性…...

从细胞到临床:表观组学分析技术在精准医疗中的角色

中国科学院等科研院所的顶尖人才发起&#xff0c;专注于多组学、互作组、生物医学等领域的研究与服务。在Nature等国际知名期刊发表多篇论文&#xff0c;提供实验整体打包、免费SCI论文润色等四大优势服务。在表观组学分析技术方面&#xff0c;提供DAP-seq、ATAC-seq、H3K4me3 …...