RHCSA考前回顾与总结

本文最后更新于:2 年前

RHCSA 简介

红帽认证系统管理员(RHCSA,Red Hat Certified System Administrator)属于Linux系统的初级认证,主要考核对系统平台的管理能力,比较适合Linux爱好者。该认证要求考生对Linux系统有一定的了解,并且能够熟练使用 Linux 命令来完成以下任务:

访问命令行

使用命令行管理文件

创建、查看和编辑文本文件

管理本地用户和群组

监控和管理 Linux 进程

控制服务和守护进程

利用文件系统权限控制文件访问

分析和存储日志文件

配置和确保 OpenSSH 服务的安全

安装和更新软件包

访问 Linux 文件系统

管理 Linux 联网

使用 Kickstart 安装红帽企业 Linux

管理文件系统和逻辑卷

管理计划作业

访问网络文件系统

管理 SELinux

控制防火墙

执行故障排除任务

红帽认证管理员(RHCSA)证书示例

考试流程

  1. 考试前必须注册RHN账户(考试时需要填写)

  2. 考试时需要带笔、身份证

  3. 入座后,屏幕是注册信息的屏幕(此时根据考官提示填写信息)

    • 姓名(拼音)—- 上下午必须一致

    • RHN账户

    • 保密协议

      支持中英文(填写资料时,必须是英语界面)

  4. 所有信息填写完成,系统启动进入Linux !!!

  5. 自己找题目,自己找虚拟机!!!(倒计时开始)

模拟考试环境

环境下载

0-rhel82模拟环境下载地址https://pan.baidu.com/s/1pvaLyuEfP4wxK5WbYOTd5g

提取码:tr5f

root账户密码::tedu

上机准备

  1. 重置虚拟机

    1
    rht-vmctl  reset   虚拟机名称
    • rht-vmctl reset red #重置red虚拟机

    • rht-vmctl reset blue #重置blude虚拟机

  2. 打开虚拟机(虚拟机管理器)

    1
    virt-manager

考试环境没有windows,是真机Linux。在考试的真机Linux系统里面,有若干台虚拟机,所有题目都必须在虚拟机中完成!考试的环境,不需要自己reset虚拟机,进入考场虚拟机已经准备完成!

考题串讲

Red 虚拟机

1. 配置网络地址

虚拟机 red 的 root 管理口令为 redhat,请为此虚拟机配置以下网络参数:

  • 主机名:red.net0.example.com
  • IP 地址:172.25.0.25/24
  • 默认网关:172.25.0.254
  • DNS 服务器:172.25.0.254

  1. 选择 red 虚拟机后双击进入,登录 root 账号

  2. 配置主机名

    1. 使用【nmtui】命令进入配置页面

    2. 选择修改主机名选项

    3. 输入题目中的主机名

    4. 核对后确认修改

  3. 配置网卡

    1. 选择编辑网卡选项

    2.选择编辑选项

    3. 更改IPv4为手动模式

    4. 按题目要求修改相关参数

    5.返回

    6. 选择激活网卡选项

    7. 重新激活一次网卡

    8. 返回

    9. 确定更改

到此 IP 配置完成,我们可以在 red 主机时执行 ip a s 命令查看IP是否配置正确:

检查ip

因为虚拟机已经配置了IP地址,后面所有的题目,都可以使用真机 ssh 远程虚拟机操作。

退出 red 虚拟机,在真机 server1 执行 ssh 172.25.0.25 命令远程连接 red 虚拟机:

在真机中远程连接 red 虚拟机

2. 配置默认软件仓库

YUM 软件仓库已可从以下地址使用:

请配置你的虚拟机,以将这些位置作为默认软件源。


  1. 新建 .repo 文件文件

    在 /etc/yum.repos.d/ 目录下新建文件,文件名随意,扩展名必须是 .repo

    新建 .repo 文件

  2. 写入如下内容

    配置以上内容后保存

  3. 验证查看效果

    配置完可以使用 yum repolist -v 命令检验配置是否正确:

  4. 安装软件测试

3. 调试 SELinux 配置

httpd 在 82 端口上提供 Web 服务,满足以下要求:

  • 此 Web 服务器能够提供/var/www/html/中所有现有的 HTML 文件
  • 此 Web 服务器在系统启动时自动启动
  • 确保 SELinux 保护机制运行在 Enforcing 模式

默认 httpd 监听80端口,SELinux 会放行,允许你监听80端口!但是现在HTTP被修改了端口82,httpd想霸占82端口,但是SELinux会拦截,不允许你使用!

  1. 使用 getenforce 命令查看是否开启了 SELinux

    默认就是Enforcing

    尝试启动 httpd 服务:

    httpd被拦截无法启动

  2. 安装提供 semanage 命令的软件

    1. 查看什么软件可以提供【semanage】命令

    2. 安装该软件

  3. 使用 semanage 命令修改SELinux的端口策略

    1
    semanage port -a -t http_port_t -p tcp 82
    • -a(add):添加规则。(删除规则是 -d)
    • -t(target):指定要修改规则的对象,这里是 http_port_t 。
    • -p(protocol):指定协议内容。这里是让httpd可以使用tcp协议的82端口。

  4. 启动 httpd 服务并设置为开机自启

    启动 httpd 服务

    设置为开启自启

    也可以只要一条命令,在启动的同时设置为开机自启:

4. 配置用户账户

创建用户 tammy,用户 ID 为 2020,用户的密码为 ilovelinux。


1
2
useradd -u 2020 tammy
passwd tammy
  • -u:指定用户的ID。

5. 按要求创建用户及组账号

  • 名为 admins 的组
  • 用户 zhsan,其附属组为 admins
  • 用户 lisi,其附属组还属于 admins
  • 用户 wangwu,没有可交互的登录 Shell,且不属于 admins 组
  • zhsan、lisi、wangwu 的密码都应该是 ilovelinux

  1. 创建用户组

  2. 创建用户并指定附属组

    1
    useradd -G  admins zhsan
    • -G:指定用户的附属组。

  3. 创建不可登录的用户

    1
    useradd -s /sbin/nologin wangwu
    • -s:指定是shell用户。

  4. 修改用户密码

6. 配置 cron 计划任务

配置计划任务,以用户 zhsan 的身份,每 5 分钟执行一次命令 logger “RH200 Test”。


  1. 查看 logger 命令所在位置

  2. 编辑计划任务

    1
    crontab  -e   -u   zhsan

    使用【crontab】命令编辑计划任务

    计划任务内容

    • -e : 指定执行文字编辑器来设定时程表,默认为 VI 编辑器。

    • -u :指定用户,这里是 zhsan。

    • 时间格式如下:

      • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推。
      • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推

如果需要验证,可在5分钟后执行 tail /var/log/messages 查看是否有内容:

7. 配置文件权限

将文件/etc/hosts 复制为/var/tmp/hosts,并按要求配置/var/tmp/hosts 的权限。

  • 文件/var/tmp/hosts 属于 root 用户
  • 文件/var/tmp/hosts 属于 root 组
  • 任何用户对/var/tmp/hosts 都没有可执行权限
  • 用户 zhsan 能够读取和写入/var/tmp/hosts 文件
  • 用户 lisi 无法读取或写入/var/tmp/hosts 文件
  • 所有其他用户(当前或未来)能够读取/var/tmp/hosts 文件

  1. 复制文件

  2. 改变文件的所有者和所属组

    前一个 root 表示文件拥有者为 root 用户,后一个 root 表示文件拥有者的使用者组。(chown 命菜鸟教程

  3. 删除所有人的可执行权限

    • a-x:删除所有人的可执行权限。a 是all所有(包括用户,组,其他人);- 是删除权限;x 是执行权限。
    • o是other其他人,u是user用户,g是group组,a是all所有人。权限可以是 u=rwx,u=rw-,u-x,u+r,g=rw-,g-x,g+w,o=rwx,o-x,o+w,a=rwx,a+w,a-x等等
    • chmod命令菜鸟教程
  4. 修改指定用户读写权限(ACL权限)

    设置ACL权限

    • -m:设置文件acl规则,,即文件的访问控制列表。

可以使用 getfacl 查看ACL权限:

查看ACL权限

  1. 设置其他用户读取权限

    设置其他用户读取权限

    这里的o是other其他人,u是user用户,g是group组,a是all所有人。权限可以是 u=rwx,u=rw-,u-x,u+r,g=rw-,g-x,g+w,o=rwx,o-x,o+w,a=rwx,a+w,a-x等等

8. 创建共用目录

创建具有以下特点的共用目录:

  • /home/tools 的组的所有权是 admins

  • 此目录能被 admins 组的成员读取、写入和访问,除 root 外其他用户没有这些权限

  • 在此目录下创建的文件,其组的所有权自动设置为 admins 组


  1. 创建目录并修改所属组

    创建目录并修改组

    查看目录所属组

  2. 修改目录权限

    方式1

    方式2

    查看目录权限

  3. 给目录设置SGID

    给目录设置 SGID 就可以让目录自动将组继承给子文件。

    给目录设置SGID

    • g+s 群组权限。它的意思是强制将此群组里的目录下文件编入到此群组中,无论是哪个用户创建的文件。(u+s、g+s、o+t三种权限讲解

    创建a.txt后所有权自动设置为admins组

9. 配置 NTP 时间客户端

配置你的系统,使其成为 server1.net0.example.com 的 NTP 客户端。让red成为server1的客户端,也就是说server1是时间服务器,让red虚拟机的时间和server1保持同步 。


  1. 查看时间

    查看本机计算机时间

  2. 安装chrony软件

    安装chrony

  3. 修改配置文件

    编辑配置文件chrony.conf

    添加以上内容

    172.25.0.254 是 server1.net0.example.com 的IP地址,写域名或者IP都可以;iburst 表示尽快同步。(chrony 详解

  4. 修改一个错误时间用来检验

  5. 重启服务,并设置开机自启动

  6. 多次查看时间是否同步

10. 配置 autofs

按照以下要求,通过 autofs 自动挂载远程用户的主目录:

  • server1.net0.example.com(172.25.0.254) 通过 NFS 共享目录 /rhome 到你的系统,此文件系统中包含为用户 ldapuser0 预配置的主目录 。
  • 预设用户 ldapuser0 的登录密码是 password 。
  • 预设用户 ldapuser0 的主目录是 server1.net0.example.com:/rhome/ldapuser0 。
  • 预设用户 ldapuser0 的主目录应自动挂载到本地的 /rhome/ldapuser0 目录 。
  • 挂载后的主目录可供用户 ldapuser0 写入。

题目的意思是:把真机(172.25.0.254)的共享目录通过 autofs 自动挂载到red虚拟机的/rhome/ldapuser0,即把 server1.net0.example.com:/rhome/ldapuser0 自动挂载到 red 主机的 /rhome/ldapuser0。

正常挂载设备或者共享,需要手动 mount 或者写入 fstab :

1
2
mount    /dev/vdb   /mnt
mount 172.25.0.254:/rhome/ldapuser0 /rhome/ldapuser0

上面的形式,不管你是否使用,计算机都在实时挂载!!!而 autofs 触发自动挂载,按需挂载(只有使用的时候才挂载【自动】)。

  1. 安装 nfs-utils 和 autofs
    安装 nfs-utils

    安装 autofs

  2. 修改 autofs 的主配置文件

    编辑配置文件

    在配置文件 /etc/auto.master 任意位置,添加如下内容:

    • 把什么设备或共享目录,挂载到哪里去(挂载到本机的/rhome)

    • 不存在 /etc/rhome.rule 等会新建文件(文件名、扩展名任意)

    • 把什么设备或共享目录挂载,是在 /etc/rhome.rule 里指定(该文件暂时还不存在)

  3. 新建文件 /etc/rhome.rule,指定要挂载的设备或目录

    新建编辑/etc/rhome.rule文件

    在 /etc/rhome.rule 中写挂载谁,文件名、扩展名任意,但是必须和步骤2中一致。内容如下:

    图解记忆

  4. 重启 autofs 服务并设置开机自启

  5. 检验是否能自动挂载

11. 查找文件

找出/etc/目录下大小超过 5MB 的文件,并将其副本放入/root/findfiles 目录。


  1. 创建 /root/findfiles 目录

  2. 查找并拷贝

    1
    find  /etc/   -type  f   -size  +5M  -exec  cp  -p  {}  /root/findfiles   \;
    • -type:根据类型查找,**f **代表file,

    • -size:根据大小找文件。(*-size +5M -size -10M* 大于5M且小于10M)。

    • -p:代表保留权限 (源文件是用户是root,拷贝后还是root,源文件是rwx,拷贝后还是rwx)

      -size +5M -size -10M 大于5M且小于10M

    • -exec:后面跟的是 command 命令,它的终止是以“;”为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

    • {}: 花括号代表前面find查找出来的文件名。

    • \ ;:表示整个命令结束。

    查找并拷贝

  3. 检验是否拷贝成功

12. 脚本实现查找文件

编写脚本(/root/abc.sh),脚本实现查找文件,拷贝文件:

在 /usr 找,小于10M、权限是 sgid 的文件,拷贝到 /root/findfiles/。


  1. 新建脚本文件

    新建脚本文件

    脚本内容如下:

    1
    find   /usr    -type f    -size    -10M    -perm   -g=s    -exec    cp    -p    {}   /root/findfiles  \;

    脚本内命令

    备注:find 查找;-size 根据大小查找;-perm 根据权限查找,-g=s;是有sgid的意思。

  2. 设置执行权限

  3. 执行脚本

13. 查找字符串

找出文件 /etc/man_db.conf 中包含字符串 sbin 的所有行,将其副本按原始顺序存放到文件 /root/out.txt 中。

文件 /root/out.txt 中不得包含空行,且所有行必须是 /etc/man_db.conf 中原始行的准确副本。


在 /etc/man_db.conf 文件中找包含 sbin 的行,找到后,保存到 /root/out.txt:

1
grep   sbin   /etc/man_db.conf  >  /root/out.txt

  • grep 命令用于查找文件里符合条件的字符串。(grep 命令菜鸟教程
  • > 表示覆盖原文件内容(文件的日期也会自动更新),**>>** 表示追加内容(会另起一行,文件的日期也会自动更新)。

14. 创建归档

创建一个名为 /root/backup.tar.bz2 的 tar 归档,其应该包含 /usr/local/ 的内容。此归档文件必须使用 bzip2 进行压缩。


  1. 安装 tar 和 bzip2

  2. 打包压缩

    1
    tar  -cPjf   /root/backup.tar.bz2    /usr/local

    • -P:保留权限。
    • -c :建立新的压缩文件。
    • -j :支持bzip2解压文件。
    • -f :指定压缩文件。
    • 更多tar命令的用法

15. 修改脚本

在red主机上有一个软件rhcsa(练习环境没有这个软件),要求运行这个软件,屏幕显示xx。


  1. 查看软件的位置

  2. 修改原始文件

    使用 1000dd 命令将原始内容全部删除,内容如下:

  3. 运行检测

Blue 虚拟机

16. 设置 root 密码

获得系统 blue 的管理权限,并将 blue 的 root 密码设置为 redhat。


  1. 退出 red 虚拟机,在主机下使用 virt-manager 命令打开虚拟机,找到blue(考试的时候没有virt-manager);

  2. 重启 blue 虚拟机,启动到引导菜单,按上下键(或双击),选择第一个菜单,按 e 键编辑:

    按上下键,找 linuxlinux16 这一行,把该行 ro 修改为 rw ,再添加空格 rd.break,编辑完成后,按 Ctrl+X 键 启动系统:

    ro 代表 read only 系统是只读的,无法破解修改密码,所以修改为rw(read write)可读可写,添加 rd.break 代表进入救援模式

  3. 使用 chroot /sysroot/ 命令切换到系统根分区,输入 passwd root 命令修改 root 密码,输入两次密码。(不需要旧密码,这里的密码不显示,不推荐使用小键盘,数字密码用大键盘。)

    然后用 touch /.autorelabel 命令重启计算机重新修改 SELinux 标签。(默认在红帽和 Centos 系统中有一条看门狗(SELinux),它发现你在篡改密码时,会拦截。在计算机根目录下创建一个隐藏文件 /.autorelabel,就可以蒙蔽狗的眼睛。)

    最后用 exit 命令退出根分区文件系统,使用 reboot 命令重启。(破解后,第一次重启比较慢。)

17. 配置网络地址

为此虚拟机配置以下网络参数:

  • 主机名:blue.net0.example.com
  • IP 地址:172.25.0.26/24
  • 默认网关:172.25.0.254
  • DNS 服务器:172.25.0.254

参考前面red虚拟机的操作步骤『传送门』。配置 IP 地址后,后面的题目,就可以使用真机 server1 ssh 远程 blue 虚拟机操作。

在 server1 执行命令 ssh 172.25.0.26 远程 blue 虚拟机:

18. 配置默认软件仓库

YUM 软件仓库已可从以下地址使用:

请配置你的虚拟机,以将这些位置作为默认软件源。


参考red主机的YUM,重新 vim 创建 YUM 配置文件。『传送门

19. 调整逻辑卷大小

将逻辑卷 vo 及其文件系统大小调整到 300MiB。确保文件系统内容保持不变。(备注:容量误差允许上下20M)


  1. 查看是 vo 逻辑卷信息

    可以看到 test 卷组下的 vo,大小为200M,小于300MB,需要扩容。

  2. 先看 vg 容量是否足够

    可以看到 test 卷组有500M,lv 只需要扩容到300M,vg 容量足够。

  3. 扩容 vo 逻辑卷

    把/dev/test/vo扩容,扩容到300M。

  4. 查看挂载点

    挂载点目录依然小于200M,并没有扩容。

  5. 扩容挂载点

  6. 再次查看挂载点

    挂载点容量接近300M,扩容成功。

20. 添加交换分区

为你的系统额外添加一个512MiB的交换分区,此交换分区应在系统启动时自动挂载,不要删除或以任何方式改动系统上原有的交换分区。


  1. 查看硬盘信息,分析硬盘

    • sr0是光盘,不能用。

    • vda硬盘(操作系统盘),分了2个分区,全部空间已经使用完毕,所以做本题,不能使用vda。

    • vdb硬盘,分了1个分区,10个G空间,使用了500M,剩余大约9G,可以做题

    • vdc硬盘,没有分区,10个G空余空间都可以使用,本题不能使用。(后面有题目,指定需要用 vdc 整个硬盘)

  2. 创建新分区

    给 vdb 创建一个512M的新分区用来做题:

    查看分区是否创建成功:

  3. 格式化分区

    将 vdb2 格式化为交换分区(swap分区):

  4. 设置开机自动挂载

    添加以上内容

  5. 激活所有交换分区

  6. 查看交换分区信息

21. 创建逻辑卷

根据以下要求,创建新的逻辑卷:

  • 逻辑卷的名字为 mylv,属于 myvg 卷组,大小为50个扩展单元(PE)
  • 卷组 myvg 中的逻辑卷的扩展块大小应当为 16MiB
  • 使用 vfat 文件系统将逻辑卷 mylv 格式化
  • 此逻辑卷应当在系统启动时自动挂载到 /mnt/mydata 目录下

  1. 查看现有分区信息

    50个PE,一个PE是16M,题目需要800M的逻辑卷,那么分区空间必须大于800M。

    • vda硬盘(操作系统盘),分了2个分区,全部空间已经使用完毕,所以做本地,不能使用vda
    • vdb硬盘,分了2个分区,10个G空间,使用了500M,剩余大约9G,可以做题
    • vdc硬盘,没有分区,10个G空余空间都可以使用,本题不能使用(后面有题目,指定需要用vdc整个硬盘)
    • 备注:50个PE,一个PE是16M,题目需要800M的逻辑卷,那么分区只要够800M,多少都可以
  2. 创建新分区

    创建1G的主分区(比800M大即可):

    查看分区是否创建成功:

  3. 创建 VG

    使用 /dev/vdb3 做 VG,VG 的名字是 myvg,VG 的PE大小(扩展单元)是16M。

    注意:这里跳过了创建 PV 的过程,是因为创建 vg 时会自动创建 PV,可以省略创建 PV 的过程。

  4. 创建逻辑卷

    使用 myvg这 个卷组,创建一个名称为 mylv 的逻辑卷:

    注意:-l 是小写字母L。-L 指定容量;-l 指定PE个数。

  5. 安装用于格式化的软件

    查看什么软件可以提供 mkfs.vfat 命令:

    安装该软件:

  6. 格式化分区

  7. 挂载分区

    1. 创建挂载点:

    2. 编辑配置文件,添加挂载信息(永久挂载)

    3. 挂载

    4. 查看是否挂载成功

  8. 重启验证如果重启失败,说明配置有错误,只能进入救援模式排错。『传送门

22. 创建VDO卷

根据如下要求,创建新的 VDO 卷:

  • 使用未分区的磁盘(/dev/vdc)
  • 此 VDO 卷的名称为 myvdo
  • 此 VDO 卷的逻辑大小为 50G
  • 此 VDO 卷使用 xfs 文件系统格式化
  • 此 VDO 卷在系统启动时自动挂载到 /vblock 目录。

VDO卷类似于 LVM 卷:删除重复数据、硬盘是10G(可以做 50G VDO)。

  1. 安装 vdo 并设置开机自启

  2. 使用磁盘制作 vdo

    查看帮助:

    • -n:指定 vdo 的名称。
    • –device:指定使用什么硬盘做 vdo 。
    • –vdoLogicalSize:指定 vdo 的大小容量。

    制作 vdo :

    1
    vdo create -n myvdo --device=/dev/vdc --vdoLogicalSize=50G

  3. 创建挂载点

  4. 格式化 vdo 卷

    -K 是快速格式化。

  5. 永久挂载

    编辑配置文件添加挂载信息:

    1
    /dev/mapper/myvdo  /vblock  xfs  defaults,_netdev 0 0
    • _netdev 参数,表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败。

    挂载逻辑卷:

    查看是否挂载成功:

  6. 重启验证

    如果重启失败,说明配置有错误,只能进入救援模式排错。传送门

23. 配置系统调优

为你的系统选择建议的 tuned 配置集并将它设为默认设置。


备注:系统调优,就是修改系统的配置,让系统运行的速度更快

调优:可以调整CPU,内存,硬盘,网络……

系统调优很难,很繁琐,很多细节。红帽为了解决调优难的问题:提前在系统里面,设置了一堆的调优方案。红帽提供了很多方案,我们需要做的就是使用这个方案。比如:

  • 方案一(偏性能):该方案里面,红帽提前把所有需要调整的参数都写好了。

  • 方案二(偏省电):该方案里面,红帽提前把所有参数都写好了。

  1. 安装 tund 软件并设开机自启

  2. 查看红帽提前做好的方案

  3. 查看推荐的方案

  4. 使用推荐值作为调优方案

容器附加题

24. 配置容器服务

利用仓库服务器(注册表服务器)上面的 nginx 镜像,创建一个名为 logserver 的容器。

  • 将其配置为以 systemd 服务的形式运行,仅面向用户 tammy;
  • 该服务应命名为 container-logserver,并将其设置为开机自动启动。

考试说明:容器仓库位于 http://registry.lab.example.com,账户 admin,密码 redhat321。


运行容器服务

  1. 安装容器软件

  2. 修改配置文件,告诉计算机到哪里去下载镜像

  3. 使用普通用户ssh远程

    exit退出ssh远程,在server1执行命令,重新使用普通用户ssh远程。

  4. 登录容器镜像网站

  5. 查看网站的下载链接

  6. 下载镜像

    1
    podman  pull   registry.lab.example.com/library/nginx

  7. 查看是否有镜像

  8. 创建题设目录

    这里是提前查看了第25题要求,两题结合起来做。

  9. 以systemd服务形式运行容器

    1
    podman run --name logserver -d -v /home/tammy/container_logserver:/usr/share/nginx/html:Z  nginx

    • –name:是容器的名称,考题有要求。
    • -d:是启动容器,放入后台, \ 是强制换行。
    • -v:是把宿主机目录挂载到容器里面的目录,-v 宿主机路径: 容器目录。
    • Z:是SELinux,安全软件允许做这个挂载,允许读数据。
    • 想启动容器,最重要的是需要有一个镜像,最后的nginx就是镜像名。

做开机自启

如果使用 root 做开机自启动,则直接使用 podman generate systemd 命令,它会自动在 /usr/lib/systemd/system/ 新建配置文件,实现开机自启动。但是,考试的题目,要求使用普通用户 tammy 做实验。

  1. 创建目录

    该目录是固定格式,固定名称,需要背下来。

  2. 在目录下新建配置文件

  3. 重新加载配置文件

  4. 设置开机自启

    以后都可以使用 systemctl start,stop,restart,enable 管理容器

    • systemctl --user start container-logserver.service 启动容器

    • systemctl --user stop container-logserver.service 关闭容器

    • systemctl --user enable container-logserver.service 设置开机自启动

  5. 创建计划任务

    如果最终不能开机自启动,可以做开机计划任务,手动启动服务:

25. 为容器配置持久存储

扩展上一个任务的 logserver 容器服务:

  • 配置主机的系统日志,以在系统重启后能保留其数据.

  • 将主机中 /var/log/journal/ 目录及任何子目录中包含的 *.journal 文件复制到目录 /home/tammy/container_logserver 下.

  • 将服务配置为启动时自动将主机中的 /home/tammy/container_logserver 目录挂载到容器中的 /usr/share/nginx/html/ 目录.


  1. 切换到 root 用户

  2. 创建目录

  3. 创建日志文件

    1
    systemd-tmpfiles --create --prefix /var/log/journal/

    • –create:是创建日志文件。
    • –prefix:指定把日志写哪里去。
  4. 重启日志服务

  5. 复制文件

    1
    find  /var/log/journal/ -name "*.journal" -exec cp {} /home/tammy/container_logserver \;


    另一种方法:

    1
    cp /var/log/journal/UUID随机/*.journal /home/tammy/container_logserver/

    这里的 UUID 按 tab 键会自动补全。可以用 ls 命令查看:

  6. 修改权限

    把拷贝的文件修改为 tammy 所有:

附加知识

虚拟化技术

虚拟化技术(Virtualization Technology)简单来说就是让一个CPU工作起来就像多个CPU并行运行,从而使得在一台电脑内可以同时运行多个操作系统。

虚拟化技术优势:虚拟机和虚拟机之间是物理隔离,绝对安全。

虚拟化技术缺点:性能差,虚拟机本身会也占大量资源。

容器技术

将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。

容器技术优势:app软件直接运行在真机,性能强大。

容器技术缺点:隔离性差。

容器镜像

想用容器,就需要容器镜像,容器镜像就是别人做的打包环境

  • 比如:(linux+java+tomcat)提前安装,提前修改好配置,封装打包成镜像。当我们需要使用容器时,需要先下载镜像,启动镜像(开箱即用)。

  • 比如:(linux+php+httpd)提前安装,提前修改好配置,封装打包成镜像当我们需要使用容器时,需要先下载镜像,启动镜像(开箱即用)。

效果类似于:

达内提供了红帽练习环境的虚拟机 f0-rhel8,这个就是镜像。这个镜像里面,已经安装了linux,已经做了各种配置(题目、分区、逻辑等等)。我想练习红帽,不需要自己做环境,仅需要下载镜像,使用 vmware 运行镜像即可(开箱即用)。

容器的进行可以去很多地方下载,**全球最大的下载容器网站是:https://hub.docker.com/**。(任何人都可以上传镜像,下载镜像)


在红帽的考试环境,无法连接外网,无法到 hub.docker.com 下载镜像。红帽的考试是内网提供了一个下载服务器 registry.lab.example.com,在我们的练习环境就是 utility虚拟机,打开该虚拟机,这个虚拟机提供了练习需要的镜像。

在练习环境中使用 virt-manager 可以查看该虚拟机,启动虚拟机。启动比较慢,配置不同性能不同,可能需要5分钟后再用。(考试时的环境不需要自己启动,只需要安装软件、下载镜像即可)

启动后,可以通过真机浏览器访问 http://registry.lab.example.com,账户 admin,密码 redhat321。可以验证是否有镜像:

安装容器软件

安装容器软件,下载镜像(在red虚拟机做实验)。

  1. 安装容器需要的软件

  2. 查看本机是否有镜像

    启动容器需要镜像,默认没有镜像,没有镜像就需要下载镜像。

  3. 修改配置文件,告诉计算机到哪里去下载镜像

    可以去外网下载,也可以是内网。

    此时可以直接登录网址,下载镜像。但考试要求用普通用户 tammy 做实验。(tammy 是前面的题目要求创建的用户)

  4. 使用普通用户ssh远程

    exit退出ssh远程,在server1执行命令,重新使用普通用户ssh远程。

  5. 登录容器镜像网站

  6. 查看网站的下载链接

  7. 下载镜像

    1
    podman  pull   registry.lab.example.com/library/nginx

  8. 查看是否有镜像

  9. 启动镜像

    1
    podman   run   -it   镜像名称或者ID   bash

    image-20220418004808073

    • run:启动镜像。
    • -i:是交互模式。
    • -t:是开启一个命令终端。
    • bash: 是命令终端的命令。
  10. 退出容器

  11. 启动容器,放入后台

    1
    podman   run   -d   镜像名称或者ID   

    额头和海棠说你

映射主机目录到容器

启动容器后,容器里面是不能保存永久数据的,容器关闭所有数据丢失。需要在容器中存储数据,怎么办?

需要把宿主机的目录映射到容器中,往容器中写数据,等同于往宿主机写数据。(运行了容器的那个电脑叫宿主机,比如red主机)

1
podman   run   -it  -v   宿主机目录:容器目录    镜像名称或者ID      bash

这样就把 red 主机的 tmp 目录映射到了 nginx 容器里面的 /tmp/a 目录(a目录没有,会自动创)。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!