RHCSA_8、容器管理,podman

系列文章目录

RHCSA_5、逻辑卷管理
RHCSA_6、SELinux管理
RHCSA_7、Firewalld、NTP、Crontab



前言

容器的目的:为进程集合提供一个独立的运行环境。
在这里插入图片描述
容器与虚拟机在硬件和底层操作系统交互有所不同:

  • 虚拟机:
  1. 使多个操作系统能够同时在一个硬件平台上运行。
  2. 使用虚拟机监控程序将硬件分为多个虚拟硬件系统,从而允许多个操作系统并行运行。
  3. 需要一个完整的操作系统环境来支持该应用。
  • 容器:
  1. 直接在操作系统上运行,从而跨系统上的所有容器共享硬件和操作系统资源。这使得应用能够保持轻巧,并快速并行运行。
  2. 共享相同的操作系统内核,将容器化应用进程与系统的其余进程隔离开,并使用与该内核兼容的软件。
  3. 需要的硬件资源比虚拟机少得多,这也使其能够快速启动和停止并降低存储要求,而相比容器通常提供的对硬件的访问,访问底屋硬件信息的应用可能需要更直接地访问硬件,这就不合适作为容器运行

一、podman

docker与podman的区别

  • docker 需要在我们的系统上运行一个守护进程(docker daemon),而 podman 不需要。
  • 因为 docke 有 docker daemon,所以 docker 启动的容器支持–restart 策略,但是 podman不支持,如果在 k8s 中就不存在这个问题,我们可以设置 pod 的重启策略,在系统中我们可以采用编写 systemd 服务来完成自启动

注册表

  • 容器注册表是用于存储和检索容器镜像的存储库。
  • 红帽通过两个主容器注册表分发认证容器镜像:
    registry. redhat.io:适用于基于官方红帽产品的容器。
    registry.connect.redhat.com:适用于基于第三方产品的容器
    registry.access.redhat.com:旧的注册表
  • 容器命名规则 语法:registry_name/user_name/image_name:tag
    registry_name是存储镜像的注册表的名称,通常是注册表的完全限定域名。
    user_name 表示镜像所属的用户和组织
    image_name在用户命名空间必须唯一
    tag 标识镜像版本。
[wjh@www ~]$ vim  /etc/containers/registries.conf      #----容器注册表配置文件

容器命令操作

[wjh@www ~]$ podman login registry.access.redhat.com         #----登录容器注册表
Username: redhat
Password: 
Login Succeeded!
#------------------
[wjh@www ~]$ podman search rhel7                             #----搜索镜像
#------------------
[wjh@www ~]$ podman pull registry.access.redhat.com/rhel7/rhel #----下载镜像
#------------------
[wjh@www ~]$ podman images                                    #----查看容器镜像
#------------------
[wjh@www ~]$ podman run -itd --name rhel7 registry.access.redhat.com/rhel7/rhel /bin/bash  #----在后台运行容器
340dd058c92087f664d3a4f23719a7a0a5bcd8a2bc11b9771ec70e3fedfdcbf7

-t == --tty 意思是 pseudo-tty(伪终端)将被分给容器
-i == --interactive 相同。容器接受输入
-d == --detach,表示容器在后台运行(已分离)
--name 设置容器名称。容器名称必须唯一。如果 podman run 命令不包含容器名称, Podman 将生成唯一的随机名称。
/bin/bash 允许交互
#------------------
                                   #-------查看正在运行的容器
podman ps -a 查看正在运行+历史运行过的容器
podman ps -q 查看正在运行的容器 id
podman ps -s 显示运行容器总文件大小
podman ps -l 显示最近创捷容器
podman ps -n 3 最近创键的 3 个容器
podman ps --no-trunc 显示所有描述
#------------------
[wjh@www ~]$ podman exec -it rhel7 /bin/bash   #----进入后台容器,退出后容器依旧启动
[root@340dd058c920 /]# 
#------------------
[wjh@www ~]$ podman rmi registry.access.redhat.com/rhel7/rhel    #----删除镜像
[wjh@www ~]$ podman rm (容器名称/容器id)                         #----删除容器

二、管理容器即服务

在将数据库或 Web 服务器等服务部署为容器时,通常希望这些容器在服务器启动时自动启
动,所以我们将容器作为 systemd 服务启动和停止,并检查其状态。

  • systemd 管理系统服务: 通过 rootless 容器创捷 systemd 用户单元文件,可以使用 systemctl 来管理。若容器 在 rootless 模式中运行,则可以从非特权用户帐户管理这些服务,以提高安全性。
  • systemd 管理用户服务: 借助 systemd 用户服务,用户可以为自己的服务创建单元文件,并使用 systemct1 命令管 理这些服务,无需 root 访问权限。
  • 当您将用户服务作为非 root 用户启用时, 该服务会在您通过文本或图形控制台或使用SSH 打开第一个会话时自动启动。当您关闭最 后一个会话时,服务停止。此行为与系统服务有所不同,系统服务是在系统启动时启动,在系统关闭时停止;
  • 可以通过 loginct1 enable-linger/disable-linger 来改变 启用/禁止用户逗留(相当于保持登录状态)。若没有指定就是当前用户,如果指定了用户名或 UID, 那么系统将会在启动时自动为这些 用户派生出用户管理器,并且在用户登出后继续保持运行。
[wjh@www ~]$ loginctl enable-linger wjh   #----允许未登录的用户在后台运行持续时间很长的服务。
#-------------------
[wjh@www ~]$ loginctl show-user wjh      #----查看用户当前属性值
UID=1000
GID=1000
Name=wjh
Timestamp=Sun 2022-10-09 19:31:05 CST
TimestampMonotonic=4562203
RuntimePath=/run/user/1000
Service=user@1000.service
Slice=user-1000.slice
Display=7
State=active
Sessions=7
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0
Linger=yes

创捷和管理 systemd 用户服务

  • 定义 systemd 用户服务,在~/.config/systemd/user/目录来下创捷服务文件。
  • 使用 systemct1 --user 命令来控制,但必须在控制台登录或直接通过 ssh 登录。sudo 和 su 不起作用。
  • systemctl 守护进程会与 systemctl --user 进程交互。仅当用户首次从控制台或 ssh 登录时,系统才会启动该进程
  • podman 生成 systemd 文件有两种方式:
    1)生成的容器,在开机时服务启动的时候启动容器,关机时停止它.
    2)每次服务启动的时候创建并运行容器,在停止服务时删除容器.
    podman 1.6.4 版本不支持–new 参数

比较系统和用户服务的不同

存储自定义单元系统服务/etc/systemd/system/unit.service
用户服务~/.config/systemd/user/unit.service
重新加载单元文件系统服务systemctl daemon-reload
用户服务systemctl --user daemon-reload
启动和停止服务系统服务systemctl start unit 、systemctl stop unit
用户服务systemctl --user start unit、 systemctl --user stop unit
自启服务系统服务systemctl enable unit
用户服务loginctl enable-linger 、systemctl --user enable unit

创建 systemd 单元文件

  1. 创建用户服务存储自定义单元文件目录
[wjh@www ~]$ mkdir -p ~/.config/systemd/user/
  1. 创建 systemd 单元文件
[wjh@www user]$ podman generate systemd --name rhel7 --files --new
/home/wjh/.config/systemd/user/container-rhel7.service
  1. 停止删除原本的 http 容器
[wjh@www user]$ podman stop rhel7 
340dd058c92087f664d3a4f23719a7a0a5bcd8a2bc11b9771ec70e3fedfdcbf7
[wjh@www user]$ podman rm rhel7 
340dd058c92087f664d3a4f23719a7a0a5bcd8a2bc11b9771ec70e3fedfdcbf7
  1. 启动并启用 container-rhel7 服务
[wjh@www ~]$ loginctl enable-linger wjh
[wjh@www user]$ systemctl --user enable container-rhel7.service --now
  1. 重启虚拟机验证是否自启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值