管理容器即服务

26 篇文章 0 订阅
20 篇文章 3 订阅

文章目录

主要内容

  1. 创建用于管理容器的systemd单元文件。
  2. 使用systemctl命令启动和停止容器。
  3. 为systemd用户服务配置用户账户,以便在主机启动时启动。

本次实验案例用到的命令

命令说明
podman用于管理容器的开源工具,它提供了一种简单的方式来创建、运行和管理容器
contsvc简化容器管理的服务

Podman 是一个用于管理容器的开源工具,它提供了一种简单的方式来创建、运行和管理容器。与 Docker 类似,Podman 允许用户在独立的、隔离的环境中运行应用程序,并提供了轻量级的虚拟化解决方案。
Podman 的主要特点包括:

  • 无需守护进程:与 Docker 不同,Podman 不需要一个后台守护进程来管理容器。它直接使用用户的进程空间来创建和运行容器,这样可以更好地与系统集成,并提供更好的安全性和性能。
  • 兼容 Docker:Podman 支持 Docker CLI 命令和 API,因此可以无缝地替代 Docker,并且可以使用现有的 Docker 镜像和容器。
  • Rootless 模式:Podman 支持在非特权用户下运行容器,这意味着用户无需 root 权限即可创建和管理容器,提供了更好的安全性。
  • 多容器管理:Podman 支持通过 Pod 的概念来管理多个容器,可以将多个相关的容器组合在一个 Pod 中,并共享网络和存储卷。

Contsvc 是一个简化容器管理的服务,它是 Podman 的一部分。Contsvc 提供了一个 RESTful API,用于与 Podman 交互,从而实现容器的创建、启动、停止、删除等操作。通过 Contsvc,可以通过 HTTP 请求来管理容器,而无需直接使用命令行工具。
Contsvc 可以作为一个独立的服务运行,也可以与 Podman 集成在一起运行。通过 Contsvc,可以实现容器的远程管理、自动化部署和集成到其他系统中。


预备内容

  1. 在服务器启动时自动启动容器:

    • 要实现容器在服务器启动时自动启动,首先需要创建一个 Systemd 单元文件。可以使用文本编辑器创建一个新的文件,例如 mycontainer.service,并在其中定义容器的启动命令、依赖关系和其他配置选项。然后,将该单元文件保存到 Systemd 的启动目录中,例如 /etc/systemd/system//usr/lib/systemd/system/。最后,使用 systemctl enable mycontainer.service 命令将该服务设置为开机启动。
  2. 以普通用户身份运行 Systemd 服务:

    • 默认情况下,Systemd 服务以 root 用户身份运行。但是,可以通过在 Systemd 单元文件中使用 UserGroup 选项来指定服务运行的用户和组。例如,可以将 User=myuserGroup=mygroup 添加到单元文件中,然后重新加载 Systemd 配置并启动服务。
  3. 创建和管理 Systemd 用户服务:

    • 创建用户级别的 Systemd 服务可以为每个用户提供独立的服务管理。首先,需要在用户的家目录下创建 ~/.config/systemd/user/ 目录。然后,在该目录中创建一个 Systemd 单元文件,定义用户级别的服务的配置信息。最后,使用 systemctl --user 命令来管理这些用户级别的服务,例如启动、停止、重启等操作。
  4. 使用 Systemd 服务管理容器:

    • 要使用 Systemd 服务来管理容器,需要创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。可以使用 ExecStart 选项来指定容器的启动命令,使用 AfterRequires 选项来定义容器的依赖关系。然后,使用 systemctl 命令来启动、停止或重启容器。
  5. 创建用于运行容器的专用用户账户:

    • 为了增强容器的安全性,可以创建一个专用的用户账户来运行容器。可以使用 adduser 命令创建一个新的用户账户,并为该用户分配适当的权限来管理容器。然后,可以在 Systemd 单元文件中使用 UserGroup 选项来指定容器运行的用户和组。
  6. 创建 Systemd 单元文件:

    • Systemd 单元文件是用来定义和配置 Systemd 服务的文件。可以使用文本编辑器创建一个新的文件,并在其中定义服务的配置信息。单元文件的格式遵循INI风格,包含各种选项和指令,如 DescriptionExecStartAfterRequires 等。详细的单元文件语法和选项可以参考 Systemd 的官方文档。
  7. 使用 Systemd 启动和停止容器:

    • 使用 Systemd 启动和停止容器非常简单。只需创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。然后,使用 systemctl start mycontainer.service 命令来启动容器,使用 systemctl stop mycontainer.service 命令来停止容器。
  8. 将容器配置为在主机启动时启动:

    • 要将容器配置为在主机启动时自动启动,只需将容器的 Systemd 单元文件放置在 Systemd 的启动目录中。可以将单元文件复制到 /etc/systemd/system//usr/lib/systemd/system/ 目录中,然后使用 systemctl enable mycontainer.service 命令将该服务设置为开机启动。
  9. 使用 Systemd 管理以 root 用户身份运行的容器:

    • 如果容器需要以 root 用户身份运行,可以使用 Systemd 服务来管理容器。创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。然后,将该单元文件放置在 Systemd 的启动目录中,例如 /etc/systemd/system//usr/lib/systemd/system/。最后,使用 systemctl 命令来启动、停止或重启容器。
  10. 大规模编排容器:

    • 对于大规模的容器编排,可以使用专门的容器编排工具,如 Kubernetes、Docker Swarm 等。这些工具提供了更高级的功能,如自动扩展、负载均衡、服务发现等,以便更好地管理和编排大量的容器。这些工具通常也会使用 Systemd 服务来管理容器的生命周期,并提供了更复杂的配置和管理选项。

一.管理容器即服务

  1. 创建用于管理容器的systemd单元文件。
  2. 使用systemctl命令启动和停止容器。
  3. 为systemd用户服务配置用户账户,以便在主机启动时启动。

1.使用redhat作为密码,创建名为contsvc的用户账号。

代码如下(示例):
su -i
useradd contsvc
passwd contsvc
exit
exit
ssh contsvc@servera

在这里插入图片描述

2.lab脚步在/tmp/containers-services/目录中准备了registres.conf文件。将该文件复制到~/.config/containers/。

代码如下(示例):
mkdir -p ~/.config/containers/
cp /tmp/containers-services/registries.conf ~/.config/containers/
podman search ubi

在这里插入图片描述

3.创建/home/contsvc/webcontent/html目录,然后创建index.html测试页。部署Web服务器容器时,您将使用此目录作为持久存储。

代码如下(示例):
mkdir -p ~/webcontent/html/
echo "Hello World" > ~/webcontent/html/index.html
ls -ld webcontent/html
ls -l webcontent/html/index.html

在这里插入图片描述

4.创建名为myweb的分离容器。将本地主机上的端口8080重定向至容器端口8080。将~/webcontent目录从主机挂载到容器中的/var/www目录。使用registry.lab.example.com/rhel8/httpd-24:1-105镜像。

代码如下(示例):
podman login registry.lab.example.com
podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-105
curl http://localhost:8080/

在这里插入图片描述

5.使用systemctl命令,创建用于管理myweb容器的systemd单元文件。完成后,停止然后删除myweb容器。systemd管理该容器,且最初就不希望该容器存在。

代码如下(示例):
mkdir -p ~/.config/systemd/user/
cd /.config/systemd/user
podman generate systemd --name myweb --files --new
podman stop myweb
podman rm mwweb

运行podman generate systemd命令,为myweb容器创建单元文件。使用–new选项,以便systemd在启动服务时创建新容器,在停止服务时删除容器。

在这里插入图片描述

6.强制systemd重新加载器配置,然后启用并启动您的新container-myweb用户服务。要测试您的工作,请停止并启动该服务,并使用curl和podman ps 命令控制容器状态。

代码如下(示例):
systemctl --user daemon-reload
systemctl --user enable --now container-myweb
podman ps
curl http://localhost:8080/
systemctl --user stop container-myweb
podman ps -all
systemctl --user start container-myweb
podman ps

在这里插入图片描述

7.要确保contsvc用户的用户服务在服务器启动时启动,可运行loginctl enable-linger命令。完成后,重新启动servera。

代码如下(示例):
loginctl enable-linger
lodinctl show-user contsvc
su -
systemctl reboot

在这里插入图片描述

8.等待servera计算机重新启动,然后以contsvc用户身份登录servera。确认systemd已启动myweb容器,并且Web内容可用。

代码如下(示例):
ssh contsvc@servera
podamn ps
curl http://localhost:8080/
exit

在这里插入图片描述


总结

以上是今天要讲的内容,学到了管理容器即服务。
此外,还可参考:
运行基本容器
查找并管理容器镜像
执行高级容器管理
将持久存储附加容器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值