RHCSA学习笔记(RHEL8) - Part2.RH134

news2024/11/19 5:32:47

Chapter Ⅰ 提高命令行生产率

SHELL脚本
#/bin/bash声明使用的shell翻译器

for循环

for VAR in LIST
do
	COMMAND1
	COMMAND2
done

实验1:显示host1-5

#! /bin/bash
for host in host{1..5}
do
  echo $host
done

实验2:显示包含kernel的软件包安装时间

#! /bin/bash
for PACKAGE in $(rpm -qa | grep kernel)
do
  echo "$PACKAGE was installed on $(date -d @$(rpm -q --qf "%{INSTALLTIME}" $PACKAGE))"
done

注:date -d 可以将天数转换为标准时间

IF判断
echo $? 返回非0,测试不成功;返回为0,测试成功

两种做判断的方法

test 1 -gt 2; echo $?
[[ 1 -gt 2 ]]; echo $?
[ 1 -gt 2 ]; echo $?

在这里插入图片描述
单层IF语句

if <CONDITION> ; then
	COMMAND1
else
	COMMAND2
fi

多层嵌套IF

if <CONDITION> ; then
	COMMAND1
elsif <CONDITION2> ; then
		COMMAND2
	else
		COMMAND3
fi

实验:判断部分服务是否运行

#! /bin/bash
for SERVICE in sshd chronyd httpd
do
  systemctl is-active $SERVICE > /dev/null
  if [ $? -eq 0 ]; then
    echo "$SERVICE is running"
  else
    echo "$SERVICE is dead"
  fi
done

正则表达式
示例文档内容:
cat
caaat
coot
cot
cut
c2t
dog
concatenate
dogma
category
educated
boondoggle
vindication
chilidog

选项说明表达式匹配内容
.匹配任意单个字符c.tcat、cot、cut、c2t、concatenate、category、educated、vindication
*前面的项目匹配零次或多次ca*tcat、caaat、concatenate、category、educated、vindication
{n}前面的项目匹配n次ca{3}tcaaat

grep -v:包含
grep -e:扩展匹配,grep -e cat -e dog file1
grep -A 2 -B 3 cat file1:在file1中查找cat字符串,同时输出前三行(Before)和后两行(After)
grep -i:忽略大小写

Chapter Ⅱ 计划将来的任务

工作场景:修改防火墙前,使用定时任务恢复防火墙配置,在出问题时可以在一定时间后自动恢复

at定时任务(一次性)
systemctl status atd
直接使用at命令设置一次性执行的指令,交互式输入(ctrl+d退出)

at now + 5min     # 5分钟后执行
at 17:35               # 17:35执行

at -l  或者 atq     # 查看at的任务列表
at -c JOBID         # 查看JOBID的任务详细信息

atrm JOBID         # 删除JOBID的任务

crontab定时任务(周期性)
crontab [ -u user ] { -l | -r | -e }
-u user 是指设定指定 user 的时程表;如果不使用 -u user 的话,就是表示设定自己的时程表。

f1 f2 f3 f4 f5 program
f1表示分钟;f2表示小时;f3表示一个月份中的第几日;f4表示月份;f5表示一个星期中的第几天;program表示要执行的任务
当f1为时表示每分钟要执行program,f2为时表示每小时都要执行程序,其余类推
当f1为a-b时表示从第a分钟到第b分钟这段时间内要执行,f2为a-b时表示从a到b小时都要执行,其余类推
当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n时表示每n小时个时间间隔执行一次,其余类推
当f1为a,b,c…时表示第a、b、c…分钟要执行,f2为a,b,c…时表示第a、b、c…个小时要执行,其余类推
在这里插入图片描述
• 只需要把相应的脚本放到/etc/cron.hourly、cron.daily、cron.weekly和cron.monthly的文件夹下,即可实现定时任务,而不需要编辑crontab配置文件
• /etc/cron.deny中配置的用户,不能使用定时任务(对root用户无效)

systemd提供的计时timer(周期性)
一般和其他服务结合使用,比如应用在清理临时文件
定时器systemd-tmpfiles-clean.timer:定义了多久运行一次定时器,以及定时到期后唤起哪个clean清理服务
清理服务systemd-tmpfiles:定义了清理的位置,以及多久未使用的文件会被清理
在这里插入图片描述
1、定时器
systemctl daemon-reload– 重新加载systemd的定时器配置文件(每个服务对应自己的timer定时器配置文件)

[root@localhost ~]# systemctl cat systemd-tmpfiles-clean.timer
# /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

OnBootSec:开机后多久开始计时
OnUnitActiveSec:定时的时间间隔

2、清理服务
systemd-tmpfiles --create /etc/tmpfiles.d/tmp.conf–指定创建清理服务
systemd-tmpfiles --clean /etc/tmpfiles.d/tmp.conf–按照配置文件定义开始清理

Chapter Ⅲ 调优系统性能

系统调优tuned
systemctl status tuned

tuned-adm list或tuned-adm profile # 列出可用的优化列表
tuned-adm recommand # 显示推荐的优化配置
tuned-adm profile xxx # 设置优化配置为xxx
tuned-adm active # 显示当前在用的优化配置
tuned-adm off # 关闭系统调优

调优配置文件

调优配置文件用途
balanced性能和节能间的折衷
desktop优化图形化界面的性能
latency-performance侧重于延迟
network-latency侧重于更低的网络延迟
network-throughput侧重于网络吞吐量
powersave省电,强制CPU尽可能使用最低的时钟频率
throughput-performance侧重于吞吐量
virtual-guest当系统在虚拟机上运行时,调优系统以获得最高性能
virtual-host当系统当虚拟机的主机时,调优系统以获得最高性能
[root@localhost ~]# tuned-adm profile
Available profiles:
- balanced                    - General non-specialized tuned profile
- desktop                     - Optimize for the desktop use-case
- hpc-compute                 - Optimize for HPC compute workloads
- latency-performance         - Optimize for deterministic performance at the cost of increased power consumption
- network-latency             - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput          - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- powersave                   - Optimize for low power consumption
- throughput-performance      - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest               - Optimize for running inside a virtual guest
- virtual-host                - Optimize for running KVM guests
Current active profile: virtual-guest

进程调优nice
进程调度程序针对不同的进程采用不同的调度策略,该策略为运行的进程指定相对优先级,这个优先级成为nice值
nice取值范围为-20(最高)到19(最低),默认值为0

  • nice值越高,表示优先级越低,该进程容易将其CPU使用量让给其他进程
  • nice值越低,表示优先级越高,该进程更加不倾向于让出CPU
  • 如果不存在资源争用,nice值没有意义

1、使用top查看运行进程的nice值
NI列显示进程的nice值,PR列显示其调度优先级(PR=NI+20)
在这里插入图片描述
2、使用ps查看进程的nice
ps axo pid,comm,nice,cls --sort=-nice
在这里插入图片描述
3、启动具有不同nice级别的进程
nice -n 数字 指令(默认为0)
在这里插入图片描述
4、更改现有进程的nice级别
renice -n 数字 PID

Chapter Ⅳ 使用ACL控制对文件的访问

单独对某个用户或组进行的文件访问权限控制

1、查看文件ACL
getfacl file
没有ACL的情况
在这里插入图片描述
有ACL的情况
在这里插入图片描述
2、查看目录ACL
getfacl directory
在这里插入图片描述
优先级
一般情况:所属者 > 所属组 > 其他(3个权限只有一个有效,判断一个权限满足后不会再判断后面的权限)
ACL情况:所属者 > ACL权限.用户 > 所属组 > ACL权限.组 > 其他(只要满足一个就不会往下判断)

3、修改ACL
setfacl -m u:devops:rwx,g:wheel:rw-,o::- 2.txt
也可以使用getfacl作为输入
getfacl 2.txt | setfacl --set-file=- 3.txt
其中–set-file选项可接受来自文件或stdin的输入,短划线字符(-)指定使用stdin

4、删除ACL
setfacl -x u:name,g:name file

5、默认权限
为了确保在目录中创建的文件和目录继承特定的ACL,需要在目录上使用默认ACL
setfacl -m d:u:name:rx directory

对父目录dir1设置默认权限,在里面新建子目录dir2,将继承父目录的默认权限
setfacl d:u:devops:- dir1

在这里插入图片描述
在这里插入图片描述
使用setfacl -k /home/student/dir1的默认权限后,在里面新建子目录dir22,将不再继承
在这里插入图片描述

Chapter Ⅴ 管理SELinux安全性

SELinux(Security Enhanced Linux):控制进程可以访问哪些文件或目录
三种模式 = { e n f o r c i n g :强制执行访问控制规则 p e r m i s s i v e :只监测发告警但不控制 d i s a b l e : S E L i n u x 关闭 三种模式=\left\{ \begin{matrix} enforcing:强制执行访问控制规则 \\ permissive:只监测发告警但不控制 \\ disable:SELinux关闭 \end{matrix} \right. 三种模式= enforcing:强制执行访问控制规则permissive:只监测发告警但不控制disableSELinux关闭

在这里插入图片描述

SELinux文件上下文
在这里插入图片描述
进程有个标签,文件也有标签,两者的标签匹配上了进程才可以访问文件
比如Apache的标签为httpd_t,/var/www/html的标签为httpd_sys_content_t,匹配上,所以apache进程可以访问该目录
在这里插入图片描述
查看进程的标签:ps auxZ或者 ps -ZC进程
查看文件或目录的标签:ls -Z或者ls -dZ
在这里插入图片描述
临时关闭SELinux

setenforce 0 关闭
setenforce 1 开启
getenforce 查询

永久关闭SELinux

/etc/selinux/config

临时修改标签

chcon -t 标签值 文件名

恢复默认值

restorecon -Rv 文件名

永久修改标签

semanage fcontext -at 标签值 文件名
semanage fcontext -l  查看
fcontext最常用的扩展正则表达式是(/.*)?,表示匹配目录及该目录中的所有内容

不同操作对标签值的影响

操作标签值的变化
创建继承父目录的标签值
复制继承复制到的目录的标签值
剪切保留原有标签值

实验:创建一个新目录,并将apache的访问目录指定这个目录,修改标签值查看curl访问结果
1、在/data下创建一个index.html,其标签继承了父目录的标签default_t
在这里插入图片描述
2、修改apache配置文件,将缺省目录指定在/data,并查询httpd进程的标签为httpd_t
在这里插入图片描述
3、在workstation上访问失败
在这里插入图片描述

4、修改/data/的SELinux属性
在这里插入图片描述
在这里插入图片描述
5、在workstation上再次访问,已经正常
在这里插入图片描述
SEBOOL值
部分系统自定义好的参数(比如FTP是否上传),SEBOOL和SELinux都允许的情况才可以
sebool可以自定义,但非常麻烦
查询:getsebool
临时关闭:setsebool virt_use_usb off
永久关闭:setsebool -P virt_use_usb off
查看sebool列表:semanage boolean -l

触发的SELinux日志
/var/log/messages,以sealert开头

Chapter Ⅵ 管理基本存储

1、分区方案
MBR:最多支持4个主分区,通过扩展分区最多可扩展到15个,大小最大为2TB
GPT:最多支持128个分区,大小最大为8ZB

2、parted分区命令

  • 向磁盘写入分区表
    写入MBR磁盘标签: parted /dev/sdb mklabel msdos
    写入GPT磁盘标签: parted /dev/sdb mklabel gpt

  • 创建分区
    parted /dev/sdb mkpart primary ext4 2048s 1000MB

    • primary:对于MBR分区,超过四个分区时,可以创建三个主分区和一个扩展分区,扩展分区上可以创建多个逻辑分区;对于GPT分区,指定分区的自定义名字即可
    • ext4:指示要在分区上创建的文件系统类型,并不会在分区上创建,仅仅作为指示
    • 2048s:起始值,s标识扇区,也可以使用MB、GB等,对于大多数磁盘而言,假设起始扇区为2048的倍数可以保证分区对齐,较为安全
    • 1000MB:分区的结束值

删除分区:parted /dev/sdb rm 2
查看分区:parted /dev/sdb print
打标记: parted /dev/sdb set 2 flag FLAGS

创建文件系统
mkfs.ext4
mkfs.xfs
临时挂载,用mount;永久挂载在/etc/fstab中修改(建议用UUID),挂载后,可以用mount /dev/sdb1的指令进行验证,通过systemctl daemon-reload加载fstab文件

lsblk -f可以查看文件系统,-p查看全路径
在这里插入图片描述
交换分区
在磁盘上划分出一部分空间,当内存不够用时,将此部分空间当作内存使用。
由于交换分区位于磁盘上,所以与RAM相比,交换会比较慢。虽然是用于增加系统RAM,但对于RAM不足以满足工作负载需求的问题,不应将交换空间视为可持续性的解决方案
在这里插入图片描述
将分区格式化成swap格式
mkswap /dev/sdb1

swapon /dev/sdb1在sdb1上开启交换分区
swapoff /dev/sdb1关闭sdb1的交换分区

swapon --show查看

/etc/fstab上永久生效
UUID swap swap defaults 0 0
注:第一个swap是挂载点,但交换分区没有挂载点,所以用swap字段占位

Chapter Ⅶ 管理逻辑卷

PV-VG-LV的关系
在这里插入图片描述
1、创建物理卷pvcreate
pvcreate会将物理卷分成若干固定大小的物理区块(PE),如4MB
pvdisplay
在这里插入图片描述
- PV NAME:映射到设备名称
- VG NAME:显示将PV分配到的卷组
- PV Size:显示PV的物理大小,包括任何不可用的空间
- PE Size:物理区块大小,是逻辑卷中可分配的最小大小
- Free PE:显示有多少PE单位可用于分配给新逻辑卷

2、创建卷组vgcreate
使用vgcreate将一个或多个物理卷PV结合为一个卷组VG
- VG Name:卷组的名称
- VG Size:存储池可用于逻辑卷分配的总大小
- Total PE:以PE单位表示的总大小
- Free PE/Size:显示VG中有多少空间可用于分配给新LV或扩展现有LV

3、创建逻辑卷lvcreate
使用lvcreate可根据VG中的可用物理块创建新的逻辑卷LV
lvcreate -n指定LV的名字
lvcreate -L指定LV的大小
lvcreate -l指定LV都少个PE

lvdisplay
在这里插入图片描述
- LV Path:显示逻辑卷的设备名称
- VG Name:显示从其分配LV的卷组
- LV Size:显示LV的总大小,使用文件系统工具确定可用空间喝数据存储的已用空间
- Current LE:显示此LV使用的逻辑区块数。LE通常映射到VG中的物理区块,并因此映射到物理卷

4、创建LV的文件系统
mkfs -t xfs /dev/mapper/vg01-lv01
mkfs -t xfs /dev/vg01/lv01
两种方式均可

逻辑卷的扩展
1、扩展卷组:vgextend
2、缩减卷组:pvreduce
3、扩展逻辑卷:lvextend

扩展完逻辑卷后,还需要调整文件系统大小
1、xfs:xfs_growfs /mnt/data(挂载点)
2、ext4: resize2fs /dev/vg01/lv01(逻辑卷)
注意:
xfs可扩,ext4可扩可缩

逻辑卷的迁移
pvmove 迁移PV 目的PV

Chapter Ⅷ 实施高级存储功能

Stratis
将物理磁盘划分成资源池,然后在上面做出多个文件系统,实现灵活管理
在这里插入图片描述

yum install stratisd stratis-cli

1、池
创建:stratis pool create test_pool /dev/sdb
增加:stratis pool add-data test_pool /dev/sdc
查看:stratis pool list

2、文件系统
创建:stratis filesystem create test_pool test_fs
查看:stratis filesystem list

VDO,虚拟数据优化器
两个内核模块:kvdo模块用于以透明的方式控制数据压缩;uds用于重复数据删除
在这里插入图片描述
安装vdo:yum install vdo kmod-kvdo
创建vdo卷:vdo create --name=vdo1 --device=/dev/vdd --vdoLogicalSize=50G
管理vdo卷:vdo start --name=vdo1
vdo stop --name=vdo1
vdo status --name=vdo1
查看统计信息:vdostats --human-readable

实验:通过向vdo卷内copy相同的文件副本,理解压缩和删除重复数据的概念
创建vdo_test卷后,压缩和删除重复的功能会自动开启
在这里插入图片描述
在这里插入图片描述
将/mnt/ 挂载到/dev/mapper/vdo_test上,并逐步将副本copy到此

初始状态下,vdo_test,总大小5G,已用3G(VDO保留),此时可用2G,压缩率99%
在这里插入图片描述
将副本1拷贝后,压缩率降至50%
在这里插入图片描述
将相同内容的副本2拷贝后,压缩率变为67%(因为副本1和副本2相同,所以vdo删除了重复的内容)
在这里插入图片描述
注:创建指定大小的文件,dd if=/dev/urandom of=/root/install.img bs=1M count=1024

永久挂载fstab
挂载选项 ,x-systemd.requires=vdo.service 意思为可延迟挂在文件系统,直到vdo.service启动为止

Chapter Ⅸ 访问网络附加存储

NFS,网络文件系统
- 服务端:共享目录
主配置文件:/etc/exports
自定义配置文件:/etc/exports.d/

/share_remote 172.25.250*(rw,sync,no_roo_squash) serverb(ro,root_squash)

/share_remote:共享的目录
172.25.250(rw,sync,no_root_squash)*:定义了172.25.250.*的访问者的权限
- no_root_squash:登录NFS主机使用分享目录的使用者,如果是root的话,那么对于这个分享的目录来说,他就具有root权限。极不安全,不建议使用
- root_squash:登录NFS主机使用分享目录的使用者如果是root时,那么这个使用者的权限会被压缩成为匿名使用者 nfsnobody,通常他的UDI和GID都会变成nobody这个系统账号的身份

使用exportfs -a使修改生效

防火墙修改:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd

- 客户端:挂载目录
配置文件/etc/nfs.conf
在这里插入图片描述

nfsconf --get nfsd tcp
nfsconf --set nfsd tcp
nfsconf --unset nfsd tcp

将挂载目录挂载到nfs共享目录上
mount serverb:/shares /mnt/public(mount nfs服务端:共享目录 挂载目录)

showmount命令用于查询NFS服务器的相关信息(showmount -e serverb)
-e或–exports:显示NFS服务器的共享目录

autofs,自动挂载网络附加存储
根据需要(进入目录)自动挂载NFS共享,并将在不再使用NFS共享时自动卸载共享

yum install autofs

主配置文件/etc/auto.master
自定义配置文件/etc/auto.master.d/

以自定义配置文件为例,在auto.master.d文件夹下,必须以.autofs作为扩展名;

/rhel	/etc/auto.test

/rhel为间接自动挂载的基础目录,/etc/auto.test包含挂载详细信息

/etc/auto.test,test反应了映射关系

user1	-rw,sync	workstation:/rhel/user1

安全挂载点是/rhel/user1;rw表示具有读/写权限;sync表示写入操作期间服务器会立即同步;最后一部分是服务端的挂载点

验证:
在未进入挂载点时,df -h看不到挂载点,cd进入后激活autofs,df -h可以看到挂载点
在这里插入图片描述

Chapter Ⅹ 控制启动过程

- 重启和关机
poweroff:停止所有的服务,卸载所有文件系统,然后关闭系统
halt:用于停止系统,与poweroff不通的是不会关闭系统,而是让系统进入能安全手动关闭的状态
reboot:停止所有的服务,卸载所有文件系统,然后重启系统
shutdown:默认一分钟后关机
shutdown -c :取消关机

- SYSTEMD Target

Target用途
graphical.target图形化
multi-user.target命令行
rescue.target救援模式
emergency.target紧急模式

查看所有的Target:systemctl list-units --all --type=target
查看缺省的Target:systemctl get-default
设置缺省Target:systemctl set-default multi-user.target
切换至图形化:systemctl isolate grahpical.target

- 进入救援(rescue)模式
在启动内核界面,按e进入编辑模式,然后在启动参数处添加 systemd.unit=rescue.target,并按Ctrl+x启动
在这里插入图片描述
进入后输入root口令,通过mount查看,可以发现/根目录是ro权限
通过mount -o remount,rw /改为rw权限
在这里插入图片描述

- 进入紧急(emergence)模式
与救援模式类似,参数为systemd.unit=emergence.target;进入系统后,用mount查询,发现/根目录为只读权限,无法进行应急操作,可以下面的指令改为读写权限

mount -o remount,rw /

- 重置root密码
1、在启动参数上,末尾添加rd.break,按Ctrl+x启动

2、/sysroot为启动的临时根目录,以读写形式重新挂载该目录
mount -o remount,rw /sysroot
在这里插入图片描述
3、切换为chroot存放位置,其中/sysroot被视为文件系统树的根
chroot /sysroot

4、设置root密码
passwd root

5、将系统配置为在启动后自动执行完整SELinux重新标记
touch /.autorelabel

6、继续启动系统
键入两次exit或者按两次Ctrl+d
在这里插入图片描述

Chapter Ⅺ 管理网络安全

在CentOS 7及之前版本中,iptables也提供了类似firewalld的daemon,用户可以选择iptables或firewalld daemon其一。CentOS 8已弃用iptables,只用nftables。
nftables和iptables负责的应该属于数据包过滤框架,iptables实际由iptables、ip6tables、arptables和ebtables构成。
在这里插入图片描述
▪ 查看所有zone和默认zone
firewall-cmd --get-default-zone

[root@localhost ~]# firewall-cmd --get-default-zone
public

firewall-cmd --get-zones

[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

firewalld区域默认配置

区域名称默认配置
trusted允许所有流入流量
home续费于传出流量相关,或与ssh、mdns、ipp-client、samba-client或dhcpv6-client预定义服务匹配,否则拒绝传入流量
internal除非与传出流量相关,或与ssh、mdns、ipp-client、samba-client或dhcpv6-client预定义服务匹配,否则拒绝传入流量(一开始与home区域相同)
work除非与传出流量相关,或与ssh、ipp-client或dhcpv6-client预定义服务匹配,否则拒绝传入流量
public除非与传出流量相关,或与ssh或dhcpv6-client预定义服务匹配,否则拒绝传入流量
external除非与传出流量相关,或与ssh预定义服务匹配,否则拒绝传入流量。通过此区域转发的IPv4传出流量将进行伪装,以使其看起来像是来自传出完了过接口的IPv4地址
dmz除非与传出流量相关,或与ssh预定义服务匹配,否则拒绝传入流量
block除非与传出流量相关,否则拒绝所有传入流量
drop除非与传出流量相关,否则拒绝所有丢弃流量(甚至不产生包含ICMP错误的响应)

▪ 添加策略
firewall-cmd --permanent --add-port=9090/tcp

[root@localhost ~]# firewall-cmd --permanent --add-
--add-forward-port=                --add-lockdown-whitelist-command=  --add-masquerade                   --add-service=
--add-icmp-block=                  --add-lockdown-whitelist-context=  --add-port=                        --add-source=
--add-icmp-block-inversion         --add-lockdown-whitelist-uid=      --add-protocol=                    --add-source-port=
--add-interface=                   --add-lockdown-whitelist-user=     --add-rich-rule=

▪ 重新加载
firewall-cmd --reload

// 先移除默认开启的没有访问限制的ssh服务
firewall-cmd --permanent --remove-service=ssh
// 添加复杂规则,只允许指定IP段访问22端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'

Chapter Ⅻ Podman

容器发展历史

  • LXC(Linux containers):最早的容器技术,Google 公司
  • docker:以 LXC 为基础,开源、最为流行的容器技术,docker 公司(初创公司)
  • rkt(Rocket):CoreOS公司主导,得到了Redhat、Google、Vmware等公司的支持
  • Podman:开源容器技术,区别于 docker,进程化和非 root 管理,Redhat 公司
  • Kubernetes:对容器的管理技术,通过标准化的 CRI 接口对容器进行管理,目前已经宣布不再支持 docker;Google 公司
  • OpenShift:管理和编排 Kubernetes ,Redhat 公司
    在这里插入图片描述
    在这里插入图片描述
    容器化与虚拟化的区别
    容器和虚拟机与硬件和底层操作系统交互方式不同
    ▪ 虚拟化:
    • 可以在单一硬件平台运行多操作系统
    • 使用 hypervisor 将硬件拆分成多个虚拟硬件,允许多个操作系统并行运行
    • 需要完整的操作系统来支持应用运行
    • 隔离性更好
      ▪ 容器化:
    • 在操作系统上直接运行,容器之间分享硬件和操作资源,容器中应用轻量化和快速并行运行
    • 共享操作系统内核,将容器化的应用程序进程与系统的其余部分隔离,并使用与该内核兼容的任何软件
    • 比虚拟化要求更少的硬件资源,可以快速启动和停止,减少存储需求;可快速(上千台)批量秒级部署
    • 代码与系统分离,升级方便
    • 适用于测试/迭代上线/版本演进
    • 网络互通问题存在问题(上千台容器共有网络的分配;上千台容器间的网络互访 等)
      在这里插入图片描述
      容器核心技术
    • Control Groups(cgroups):资源管理
    • NameSpace:进程隔离
    • SElinux和Seccomp(Secure Computing mode)加强安全边界

容器利用 NameSpace 为资源(如进程、网络通信和卷)提供独立的、隔离的环境;在容器中运行的进程与主机上的所有其他进程是隔离的
在这里插入图片描述
容器核心要素

  • images(映像):提供已经封装的文件,容器都是从 images 复制而来
    • 自己做
    • 官方提供:registry.hub.docker.com
    • 第三方:redhat、阿里等
  • Tag(标记):用于区分 image 版本,如果 image 名称中不含有 tag,将默认使用 latest tag

registry_name/user_name/image_name:tag

  • registry_name:是存储 image 的 registry 名称,一般是registry 的域名
  • user_name:是 image 所属的用户或组织
  • image_name:必须在用户 userspace 中唯一

Podman
含义:Pod Manager
三大组件
在这里插入图片描述

配置步骤
1、安装 container 软件包

yum  module  install  container-tools

2、修改配置文件

vim /etc/containers/registries.conf
# 使用本地库
[registries.search]
registries = [' registry.access.redhat.com', ' registry.redhat.io']

# 使用远程库,insecure表示不做安全检查
[registries.search]
registries = ['workstation.lab.example.com:5000']
[registries.insecure]
registries = ['workstation.lab.example.com:5000']

3、查看库
本地库:podman images
远程库:podman search workstation.lab.example.com:5000/

4、下载 PULL 容器映像 images
使用 Podman pull 从 registry 中下载 images,应始终使用完整的 image 名称
podman pull 命令从 registry 中提取指定的 image 并保存到本地
下载后可以通过 podman images 查看下载到本地 image
在这里插入图片描述
也可以通过 podman rmi IMAGE-ID 删除下载后的映像
在这里插入图片描述
5、运行容器

podman run --privileged -d  --name registry  -p 5000:5000 -v /var/lib/registry/:/var/lib/registry 

主要参数列表

参数说明
–privilegeGive extended privileges to container
-d后台运行
Run container in background and print container ID
-it将终端分配给容器,并允许向其发送键盘指令
–name容器名称
-p本地端口:容器端口
Publish a container’s port, or a range of ports, to the host (default [])
-v本地目录:容器目录
Bind mount a volume into the container (default [])
-e传递环境变量
Set environment variables in container

5、停止/删除容器
podman stop 容器id
podman rm 容器id

6、查看容器运行情况
查看所有容器:podman ps -a
查看运行容器:podman ps
在这里插入图片描述
容器随系统启动
▪ 当数据库或 web 服务器等服务部署为容器时,通常希望这些容器与服务器一起自启动
▪ 通过为无根(rootless)容器创建 systemd user unit 文件,可使 systemctl 命令管理,类似常规服务
▪ 如果容器以 rootless 模式运行,可以用非 root 账户管理这些服务,提高安全性
▪ 要对许多基于容器的应用程序和服务进行更复杂的伸缩和编排,可使用基于 Kubernetes 的企业编排平台,如 RedHat Openshift Container Platform(少量容器的不需要扩展的小型部署可以使用 systemd unit管理)

配置步骤:
1、定义 systemd user service
创建 ~/.config/systemd/user/ 目录来存储 unit 文件
2、创建 unit 文件
podman generate --name web --files --new
–name container_name:指定容器名称,用作模板来生成 unit 文件;生成文件名称为 containers-container_name.service
–files:指示 Podman 在当前目录中生成 unit 文件;没有这个选项,Podman 将在标准输出中显示该文件
–new:指示 Podman 配置 systemd 服务,以便在服务启动时创建容器,并在服务停止时删除。在这种模式下,容器是临时的,通过需要持久存储来保存数据。没有 --new 选项,Podman 配置服务启动和停止现有的容器,而不删除
3、使用 systemd 启动和停止容器
systemd监视容器状态,并在它们失败时重新启动它们,不要使用 podman 命令来启动或停止这些容器,否则会干扰systemd监视

systemctl --user start container-web
systemctl --user stop container-web
systemctl --user status container-web

4、激活用户实例
激活的用户实例 systemd user unit,只有在用户登录会话后,才会运行。
如果要让用户实例 systemd user unit 随系统自动启动,需要再执行命令:

loginctl enable-linger

配置系统和用户服务

Storing custom unit filesSystem services/etc/systemd/system/unit.service
User services~/.config/systemd/user/unit.service
Reloading unit filesSystem services# systemctl daemon-reload
User services$ systemctl --user daemon-reload
Starting and stopping a serviceSystem services# systemctl start UNIT
# systemctl stop UNIT
User services$ systemctl --user start UNIT
$ systemctl --user stop UNIT
Starting a service when the machine startsSystem services# systemctl enable UNIT
User services$ loginctl enable-linger
$ systemctl --user enable UNIT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1276051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务 SpringCloudAlibaba】实用篇 · Gateway服务网关

微服务&#xff08;8&#xff09; 文章目录 微服务&#xff08;8&#xff09;1. 为什么需要网关2. gateway快速入门1&#xff09;创建gateway服务&#xff0c;引入依赖2&#xff09;编写启动类3&#xff09;编写基础配置和路由规则4&#xff09;重启测试5&#xff09;网关路由的…

linux 内核工作队列技术原理

首先介绍一下工作队列使用的术语。 work&#xff1a;工作&#xff0c;也称为工作项。work queue&#xff1a;工作队列&#xff0c;就是工作的集合&#xff0c; work queue 和 work 是一对多的关系。worker&#xff1a; 工人&#xff0c; 一个工人对应一个内核线程&#xff0c;…

助力android面试2024【面试题合集】

转眼间&#xff0c;2023年快过完了。今年作为口罩开放的第一年大家的日子都过的十分艰难&#xff0c;那么想必找工作也不好找&#xff0c;在我们android开发这一行业非常的卷&#xff0c;在各行各业中尤为突出。android虽然不好过&#xff0c;但不能不吃饭吧。卷归卷但是还得干…

什么是美颜SDK?市面常用直播美颜SDK的技术比较

直播平台美颜技术其中的核心就是美颜SDK。本文将深入探讨什么是美颜SDK&#xff0c;以及市面上常用的直播美颜SDK的技术比较。 一、美颜SDK简介 美颜SDK&#xff0c;使开发者能够在其应用或平台中集成美颜特效。对于直播平台而言&#xff0c;美颜SDK的引入旨在提供实时、高质…

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃 出现下列问题&#xff0c;如何解决&#xff1f; 1. LabVIEW 程序因image.cpp或drawmgr.cpp中的错误而崩溃 2. 正在通过cRIO-9034运行独立的LabVIEW应用程序&#xff0c;但它因drawmgr.cpp中的错误而崩溃 …

利用reddit的api进行爬虫

1 介绍 Reddit是一个社交新闻聚合网站&#xff0c;用户可以发布、评价和讨论各种话题。Reddit的内容涵盖了广泛的主题&#xff0c;可以从中获取大量的文本数据进行情绪分析。 2 注册 2.1 注册reddit 你需要先注册一个reddit的账号。 2.2 注册api https://www.reddit.com/…

微服务架构:解析分布式系统的演进

目录 微服务是什么&#xff1f; 微服务的优势 微服务的挑战 应对微服务挑战的方法 结论 在当今快速发展的软件开发领域&#xff0c;微服务架构成为一种备受瞩目的设计理念&#xff0c;被广泛应用于构建灵活、可扩展的分布式系统。本文将深入探讨什么是微服务&#xff0c;为…

LeetCode困难题(分发糖果--接雨水)

分发糖果 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&#xff0c;计算并返回…

线性回归既是一种数据挖掘与建模算法,也是统计学领域、计量经济学领域的常用学术建模方法,有何不同?

一.线性回归的基本形式 线性回归既是一种数据挖掘与建模算法&#xff0c;也是统计学领域、计量经济学领域的常用学术建模方法。在数据挖掘与建模领域&#xff0c;线性回归算法是一种较为基础的机器学习算法&#xff0c;其基本思想是将响应变量&#xff08;因变量、被解释变量&…

MySQL安全相关——TDE和数据脱敏功能介绍

MySQL作为一款广泛使用的开源关系型数据库管理系统(RDBMS)&#xff0c;其安全性一直是开发者和企业关注的重点。在MySQL中&#xff0c;有一些与安全相关的功能&#xff0c;其中包括Transparent Data Encryption(TDE)和数据脱敏。本文将对这些功能进行介绍。 一、Transparent Da…

使用 kubeadm 部署 Kubernetes 集群(二)k8s环境安装

一、安装containerd 安装 k8s 有几种方式&#xff1a; 1、 Kubeadm 2、 二进制 这两个是 k8s 官网提供的方式&#xff0c;也是生产环境用的还可以借助第三方平&#xff1a;rancher、kubesphere 都可以装 k8s 这里使用 kubeadm 1.安装 containerd 在 Kubernetes 集群中&#…

CSS——基础选择器、文字控制属性

1、CSS定义 层叠样式表&#xff08;Cascading Style Sheets&#xff0c;缩写为CSS&#xff09;&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;美化内容&#xff09;。 书写位置&#xff1a;title 标签下方添加style双标签&#xff0c;styl…

externalTrafficPolicy 再探

一 externalTrafficPolicy 属性再探 一次网络不通"争吵"引发的思考 K8s中的external-traffic-policy是什么? 说明&#xff1a; 阿里云的 EDAS 和ACK的默认行为不一样 Kubernetes(二十三)Service(二)会话保持和获取客户端的ip 访问 externalTrafficPolicy 为 L…

二分查找与搜索树高频问题

关卡名 逢试必考的二分查找 我会了✔️ 内容 1.山脉数组的峰顶索引 ✔️ 2.旋转数字的最小数字 ✔️ 3.寻找缺失数字 ✔️ 4.优化求平方根 ✔️ 5.中序与搜索树原理 ✔️ 6.二叉搜索树中搜索特定值 ✔️ 7.验证二叉搜索树 ✔️ 基于二分查找思想&#xff0c;可以拓展出很…

IntelliJ IDEA 之初体验(上)

IntelliJ IDEA 是一款由 JetBrains 公司开发的强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专注于 Java 开发&#xff0c;同时支持多种其他编程语言。本文将详细介绍 IntelliJ IDEA 的安装过程以及一些常用的基本操作。 第一步&#xff1a;下载与安装 IntelliJ…

LeetCode Hot100 75.颜色分类

题目&#xff1a; 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 so…

LeetCode 2661. 找出叠涂元素:多次映射

【LetMeFly】2661.找出叠涂元素&#xff1a;多次映射 力扣题目链接&#xff1a;https://leetcode.cn/problems/first-completely-painted-row-or-column/ 给你一个下标从 0 开始的整数数组 arr 和一个 m x n 的整数 矩阵 mat 。arr 和 mat 都包含范围 [1&#xff0c;m * n] 内…

UPDF 已集成 ChatGPT,AI 赋能注入新动能!

ChatGPT 掀起全球AI热潮,引发了世界范围内对AIGC未来会如何重塑各行各业的讨论与畅想。近日,由赛博爱思(上海)软件科技有限公司独立自主研发的国产 PDF 软件 UPDF完成版本更新,正式上线 AI 功能。据悉,UPDF AI完美集成了ChatGPT 的技术,可帮助用户智能阅读、总结、翻译、问答PD…

实现一个简单的网络通信上

那么我们的服务器有了&#xff0c;接下来就是初始化服务器 我们写的是基于udp协议的服务器&#xff0c;如果你想进行网络编程&#xff0c;那么创建的第一个就是socket 创建套接字 domain参数 所以当我们创建一个套接字时&#xff0c;你得说明未来使用这些套接字对应的类型是什…