由于后边可能要启动多个服务,避免服务之间相互干扰,本课程建议每个服务独立部署到一台主机上,这样做会导致资源占用过多,可能会影响系统的运行。服务器部署一般不采用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 | 修改DNS为192.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 |
| 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容器连网的特性没有掌握好。该实验暂时我就用传统的虚拟机来做。敬请期待!