文章目录
- 主要内容
- 一.管理容器即服务
- 1.使用redhat作为密码,创建名为contsvc的用户账号。
- 2.lab脚步在/tmp/containers-services/目录中准备了registres.conf文件。将该文件复制到~/.config/containers/。
- 3.创建/home/contsvc/webcontent/html目录,然后创建index.html测试页。部署Web服务器容器时,您将使用此目录作为持久存储。
- 4.创建名为myweb的分离容器。将本地主机上的端口8080重定向至容器端口8080。将~/webcontent目录从主机挂载到容器中的/var/www目录。使用registry.lab.example.com/rhel8/httpd-24:1-105镜像。
- 5.使用systemctl命令,创建用于管理myweb容器的systemd单元文件。完成后,停止然后删除myweb容器。systemd管理该容器,且最初就不希望该容器存在。
- 6.强制systemd重新加载器配置,然后启用并启动您的新container-myweb用户服务。要测试您的工作,请停止并启动该服务,并使用curl和podman ps 命令控制容器状态。
- 7.要确保contsvc用户的用户服务在服务器启动时启动,可运行loginctl enable-linger命令。完成后,重新启动servera。
- 8.等待servera计算机重新启动,然后以contsvc用户身份登录servera。确认systemd已启动myweb容器,并且Web内容可用。
- 总结
主要内容
- 创建用于管理容器的systemd单元文件。
- 使用systemctl命令启动和停止容器。
- 为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,可以实现容器的远程管理、自动化部署和集成到其他系统中。
预备内容
-
在服务器启动时自动启动容器:
- 要实现容器在服务器启动时自动启动,首先需要创建一个 Systemd 单元文件。可以使用文本编辑器创建一个新的文件,例如
mycontainer.service
,并在其中定义容器的启动命令、依赖关系和其他配置选项。然后,将该单元文件保存到 Systemd 的启动目录中,例如/etc/systemd/system/
或/usr/lib/systemd/system/
。最后,使用systemctl enable mycontainer.service
命令将该服务设置为开机启动。
- 要实现容器在服务器启动时自动启动,首先需要创建一个 Systemd 单元文件。可以使用文本编辑器创建一个新的文件,例如
-
以普通用户身份运行 Systemd 服务:
- 默认情况下,Systemd 服务以 root 用户身份运行。但是,可以通过在 Systemd 单元文件中使用
User
和Group
选项来指定服务运行的用户和组。例如,可以将User=myuser
和Group=mygroup
添加到单元文件中,然后重新加载 Systemd 配置并启动服务。
- 默认情况下,Systemd 服务以 root 用户身份运行。但是,可以通过在 Systemd 单元文件中使用
-
创建和管理 Systemd 用户服务:
- 创建用户级别的 Systemd 服务可以为每个用户提供独立的服务管理。首先,需要在用户的家目录下创建
~/.config/systemd/user/
目录。然后,在该目录中创建一个 Systemd 单元文件,定义用户级别的服务的配置信息。最后,使用systemctl --user
命令来管理这些用户级别的服务,例如启动、停止、重启等操作。
- 创建用户级别的 Systemd 服务可以为每个用户提供独立的服务管理。首先,需要在用户的家目录下创建
-
使用 Systemd 服务管理容器:
- 要使用 Systemd 服务来管理容器,需要创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。可以使用
ExecStart
选项来指定容器的启动命令,使用After
和Requires
选项来定义容器的依赖关系。然后,使用systemctl
命令来启动、停止或重启容器。
- 要使用 Systemd 服务来管理容器,需要创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。可以使用
-
创建用于运行容器的专用用户账户:
- 为了增强容器的安全性,可以创建一个专用的用户账户来运行容器。可以使用
adduser
命令创建一个新的用户账户,并为该用户分配适当的权限来管理容器。然后,可以在 Systemd 单元文件中使用User
和Group
选项来指定容器运行的用户和组。
- 为了增强容器的安全性,可以创建一个专用的用户账户来运行容器。可以使用
-
创建 Systemd 单元文件:
- Systemd 单元文件是用来定义和配置 Systemd 服务的文件。可以使用文本编辑器创建一个新的文件,并在其中定义服务的配置信息。单元文件的格式遵循INI风格,包含各种选项和指令,如
Description
、ExecStart
、After
、Requires
等。详细的单元文件语法和选项可以参考 Systemd 的官方文档。
- Systemd 单元文件是用来定义和配置 Systemd 服务的文件。可以使用文本编辑器创建一个新的文件,并在其中定义服务的配置信息。单元文件的格式遵循INI风格,包含各种选项和指令,如
-
使用 Systemd 启动和停止容器:
- 使用 Systemd 启动和停止容器非常简单。只需创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。然后,使用
systemctl start mycontainer.service
命令来启动容器,使用systemctl stop mycontainer.service
命令来停止容器。
- 使用 Systemd 启动和停止容器非常简单。只需创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。然后,使用
-
将容器配置为在主机启动时启动:
- 要将容器配置为在主机启动时自动启动,只需将容器的 Systemd 单元文件放置在 Systemd 的启动目录中。可以将单元文件复制到
/etc/systemd/system/
或/usr/lib/systemd/system/
目录中,然后使用systemctl enable mycontainer.service
命令将该服务设置为开机启动。
- 要将容器配置为在主机启动时自动启动,只需将容器的 Systemd 单元文件放置在 Systemd 的启动目录中。可以将单元文件复制到
-
使用 Systemd 管理以 root 用户身份运行的容器:
- 如果容器需要以 root 用户身份运行,可以使用 Systemd 服务来管理容器。创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。然后,将该单元文件放置在 Systemd 的启动目录中,例如
/etc/systemd/system/
或/usr/lib/systemd/system/
。最后,使用systemctl
命令来启动、停止或重启容器。
- 如果容器需要以 root 用户身份运行,可以使用 Systemd 服务来管理容器。创建一个 Systemd 单元文件,并在其中定义容器的启动命令和依赖关系。然后,将该单元文件放置在 Systemd 的启动目录中,例如
-
大规模编排容器:
- 对于大规模的容器编排,可以使用专门的容器编排工具,如 Kubernetes、Docker Swarm 等。这些工具提供了更高级的功能,如自动扩展、负载均衡、服务发现等,以便更好地管理和编排大量的容器。这些工具通常也会使用 Systemd 服务来管理容器的生命周期,并提供了更复杂的配置和管理选项。
一.管理容器即服务
- 创建用于管理容器的systemd单元文件。
- 使用systemctl命令启动和停止容器。
- 为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
总结
以上是今天要讲的内容,学到了管理容器即服务。
此外,还可参考:
运行基本容器
查找并管理容器镜像
执行高级容器管理
将持久存储附加容器