RHCSA 认证考试容器解析版 (2022最新版)
详细讲解podman的日志存储与容器的永久自启,价值50分。学会容器基本95%拿下CSA
第21题容器开机自启
本容器题适用于2022红帽8认证最新版,由于使用的是虚拟模拟环境,在容器中一些操作环境无法实现,只例出如下操作解析步骤
如果读者对于podman不了解,只认识docker容器,那便可参考我早先发布的容器博客进行认识和熟悉,在来看本容器题目即可轻松理解。
RHCSA满分:300分
容器:50分
及格:210
第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里面的所有服务.
multi-user.target–文本界面的Linux系统
loginctl
systemd登录控制管理器
开启用户的systemd权限
如果用户没有systemd权限,需要执行这个命令开启systemd权限,
否则做的systemd操作是不会生效的
更多推荐
所有评论(0)