RHCSA 认证考试容器解析版 (2022最新版)

第21题容器开机自启

本容器题适用于2022红帽8认证最新版,由于使用的是虚拟模拟环境,在容器中一些操作环境无法实现,只例出如下操作解析步骤

如果读者对于podman不了解,只认识docker容器,那便可参考我早先发布的容器博客进行认识和熟悉,在来看本容器题目即可轻松理解。

RHCSA满分:300分
容器:50分
及格:210

RHCSA 认证考试容器解析版 (2022最新版)_第1张图片

第22题容器持久化存储

2、通过以下方式扩展上一个任务
1)配置 systemd-journald 服务,要求永久保留日志数据
2)将 /var/log/journal 目录及任何子目录中的任何 *.journal 文件复制
到/home/contsvc/container_journal 中
3)容器服务启动时能自动将 /home/contsvc/container_ journal挂载到容器中的 /var/log/journal 上

解题思路

博友可以记住以下一些关键命令步骤,以便日后考题时能够快速手并熟悉
这里只需要完成日志信息配置即可,容器题可以一起做

root登录节点 ssh root@题目指定的主机
        vim /etc/systemd/journald.conf
        # 将 Storage=auto 改为 Storage(存储)=persistent(持续加载)
        systemctl restart systemd-journald
        # sync(同步) &&  reboot 重启节点、⽣成⽇志

    # root登录节点 ssh root@题目指定的主机
        mkdir /home/eldorado/container-journal # 如果不存则创建
        cp -a /var/log/journal/* /home/eldorado/container-journal/
        chown -R eldorado.eldorado /home/eldorado/container-journal/
   

日志回滚理论

永久实验步骤概念

vim /etc/systemd/journald.conf      //日志存储配置文件

实验二:如何永久保存日志?
前言:

默认情况下,重启系统(poweroff)之后,日志会丢失,之前的日志没了
如何永久保存日志呢?将日志存放在硬盘中!
日志的默认保存路径是:/run/log/journal
默认方式在系统中重启后 日志会被清理

/var目录

所有服务的登录的文件或错误信息文件(LOG FILES)都在/var/log下,此外,一些数据库如MySQL则在/var/lib下,还有,用户未读的邮件的默认存放地点为/var/spool/mail
系统日志一般都存在/var/log下
**/var/log/messages** 是在做故障诊断时首先要查看的文件,也重启开启日志后生成的重要数据

要将systemd-journald服务配置为在重新启动后永久保留系统日志,您需要将Storage设置为persistent。

可以为Storage参数设置的其他值是:
[1]、persistent:将日志存储在/var/log/journal目录中,该目录在重新启动后仍然存在。
[2]、volatile:将日记存储在volatile/run/log/journal目录中,这不会导致系统重启。[3]、auto:rsyslog将确定使用持久性存储(persistent)还是易失性存储(volatile),如果存在/var/log/journal目录,则rsyslog使用持久性存储,否则使用易失性存储。

对于永久存储,请将其设置为:

[Journal]

Storage=persistent

提交更改后,请重新启动systemd-journald服务以使配置更改生效:

sudo systemctl restart systemd-journald

确认服务已重新启动并正在运行:

$ systemctl status systemd-journald

实验思路:

1 首先查看日志,默认情况下重启只能看到重启之后的日志 默认日志路径:/run/log/journal
2 要想将日志永久的保留下来,完成以下步骤:
3 在/var/log 目录下创建目录journal。     mkdir /var/log/journal
4 修改权限
5 修改所有组,并且设定特殊权限--强制位。(谁在我这个目录建立的文件,所有组都是属于此目录的所有组 工厂原理:生产的东西归工厂所有)
6 重启journald服务,日志会被存放在指定路径 /var/log/journal中
 systemctl restart systemd-journald.service
7 将 /var/log/journal删除可以看到默认路径/run/log/journal出现,两者存放的内容是一样的。ls 可以查看journal内存放的内容。
8 设置日志存放的大小(永久回滚设定),日志可永久存放在硬盘中啦!
9 更改路径之前,重启只能看到重启时间之后的日志
10 将路径改为 /var/log/journal后,可以看到重启之前的日志是被保存下来的

2、镜像容器题目

1、利用注册表服务器上的 httpd 镜像,创建名为 httpserver的容

1)用 registry 服务器提供的 httpd-24:1-105镜像创建容器 ,容器仓库服务器为
registry.lab.example.com/rhel8/httpd-24:1-105
说明:考试没有告诉镜像的地址,需要用podman search httpd-24:1-105搜索得到镜像仓库的地址。
2. 将其配置为以 systemd 服务的形式运行,且仅面向现有用户 contsvc
3. 该服务应命名为 container-httpserver,此服务在系统重启后将自动启动

解题思路

以root的身份运行以下命令:
        yum -y module install container-tools  //按照podman容器工具
    以题目指定的用户去登录并执行以下命令:
        ssh 题目指定的用户@题目指定的主机
        podman login registry地址(在重要配置里面去找注册表,这个地址的http://不需要) --tls-verify=false(用于跳过https加密寻找)
        输入用户名(在重要配置里面找用户名)
        输入密码(在重要配置里面找密码)
        如果看到succeded就表示登录成功
        打开浏览器,以浏览器上输入注册表后面跟的地址,输入用户名和密码
        找到题目让你拉取的镜像,点击它,点开之后在浏览器的右边会出现拉取镜像的命令
        点进去后把命令直接复制到命令行,然后把 docker 命令换成podman,再在后加上--tls-verify=false
        如此一来就可以把镜像拉取下来

        podman pull registry.lab.example.com/rhel8/httpd-24 --tls-verify=false
        podman images # 查看IMAGE ID 并复制
        podman run -d --name logserver -v /home/eldorado/container-journal:/var/log/journal:Z 镜像id
        mkdir ~/.config/systemd/user -pv                 #进入用户家目录生成可执行文件
        cd .config/systemd/user
        podman generate systemd --name logserver --files        #生成一个永久生成的服务
        vim container-logserver.service(此文件在~/.config/systemd/user目录下)
            将
            WantedBy=multi-user.target 
            改为 
            WantedBy=default.target

        systemctl --user enable container-logserver.service
        loginctl enable-linger 题目指定的用户
		回到宿主机进行reboot

		 #eldorado 登录验证
        podman ps    #服务已启动
        podman exec -it logserver /bin/sh
       ls   /var/log/journal/  查看⽇志信息是否有
       ls  /home/eldorado/container-journal/   查看宿主机的容器日志是否同步,则成功。
	

 # 重启节点后、切换普通⽤户执⾏podman ps 验证是否⾃启动。

命令难点解析

generate用于创建自启动服务格式
生成 systemd 服务单元文件的内容:

systemctl管理target
target是一个box(盒子),装了很多service(服务),可以理解为一组service(服务).
tartget是由服务组成的一类启动目标,systemd可以设置启动目标.
如果systemd指定了一个target作为启动目标,那么下次启动的时候就会启动target里面的所有服务.

RHCSA 认证考试容器解析版 (2022最新版)_第2张图片

multi-user.target–文本界面的Linux系统

loginctl
systemd登录控制管理器
开启用户的systemd权限
如果用户没有systemd权限,需要执行这个命令开启systemd权限,
否则做的systemd操作是不会生效的

你可能感兴趣的:(RHCSA,服务器,docker,运维)