3.5. 重启容器
因为 podman 不支持 --restart 选项,所以您可以将 podman 配置为 systemd 服务,如使用 Podman 将容器移植到 systemd中所述
3.5.1. 使用带有 Podman 的 systemd 单元文件 复制链接链接已复制到粘贴板!
默认情况下,Podman 为现有容器或 pod 生成一个单元文件。您可以使用 podman generate systemd --new 命令生成更多可移植的 systemd 单元文件。--new 标志指示 Podman 生成创建、启动和删除容器的单元文件。
从正在运行的 Red Hat Quay registry 创建 systemd 单元文件,如下所示:
sudo podman generate systemd --new --files --name redis sudo podman generate systemd --new --files --name postgresql-quay sudo podman generate systemd --new --files --name quay sudo podman generate systemd --new --files --name postgresql-clairv4 sudo podman generate systemd --new --files --name clairv4
$ sudo podman generate systemd --new --files --name redis $ sudo podman generate systemd --new --files --name postgresql-quay $ sudo podman generate systemd --new --files --name quay $ sudo podman generate systemd --new --files --name postgresql-clairv4 $ sudo podman generate systemd --new --files --name clairv4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将单元文件复制到
/usr/lib/systemd/system,以 root 用户身份安装它们:sudo cp -Z container-redis.service /usr/lib/systemd/system sudo cp -Z container-postgresql-quay.service /usr/lib/systemd/system sudo cp -Z container-quay.service /usr/lib/systemd/system sudo cp -Z container-postgresql-clairv4.service /usr/lib/systemd/system sudo cp -Z container-clairv4.service /usr/lib/systemd/system
$ sudo cp -Z container-redis.service /usr/lib/systemd/system $ sudo cp -Z container-postgresql-quay.service /usr/lib/systemd/system $ sudo cp -Z container-quay.service /usr/lib/systemd/system $ sudo cp -Z container-postgresql-clairv4.service /usr/lib/systemd/system $ sudo cp -Z container-clairv4.service /usr/lib/systemd/systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入 systemd Manager 配置:
sudo systemctl daemon-reload
$ sudo systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在引导时启用服务并启动它们:
sudo systemctl enable --now container-redis.service sudo systemctl enable --now container-postgresql-quay.service sudo systemctl enable --now container-quay.service sudo systemctl enable --now container-postgresql-clairv4.service sudo systemctl enable --now container-clairv4.service
$ sudo systemctl enable --now container-redis.service $ sudo systemctl enable --now container-postgresql-quay.service $ sudo systemctl enable --now container-quay.service $ sudo systemctl enable --now container-postgresql-clairv4.service $ sudo systemctl enable --now container-clairv4.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. 启动、停止和检查服务的状态 复制链接链接已复制到粘贴板!
检查 Quay 组件的状态:
sudo systemctl status container-redis.service sudo systemctl status container-postgresql-quay.service sudo systemctl status container-quay.service sudo systemctl status container-postgresql-clairv4.service sudo systemctl status container-clairv4.service
$ sudo systemctl status container-redis.service $ sudo systemctl status container-postgresql-quay.service $ sudo systemctl status container-quay.service $ sudo systemctl status container-postgresql-clairv4.service $ sudo systemctl status container-clairv4.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止 Quay 组件服务:
sudo systemctl stop container-redis.service sudo systemctl stop container-postgresql-quay.service sudo systemctl stop container-quay.service sudo systemctl stop container-postgresql-clairv4.service sudo systemctl stop container-clairv4.service
$ sudo systemctl stop container-redis.service $ sudo systemctl stop container-postgresql-quay.service $ sudo systemctl stop container-quay.service $ sudo systemctl stop container-postgresql-clairv4.service $ sudo systemctl stop container-clairv4.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 Quay 组件服务:
sudo systemctl start container-redis.service sudo systemctl start container-postgresql-quay.service sudo systemctl start container-quay.service sudo systemctl start container-postgresql-clairv4.service sudo systemctl start container-clairv4.service
$ sudo systemctl start container-redis.service $ sudo systemctl start container-postgresql-quay.service $ sudo systemctl start container-quay.service $ sudo systemctl start container-postgresql-clairv4.service $ sudo systemctl start container-clairv4.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3. 在重启后测试重启 复制链接链接已复制到粘贴板!
配置并启用服务后,重新引导系统。系统重新启动后,使用 podman ps 检查 Quay 组件的所有容器是否已重启:
在本实例中,Quay 容器本身无法启动。这是因为,在 Quay 中启用了安全扫描时,它会尝试在启动时尝试连接 Clair。但是,Clair 尚未完成初始化过程,因此 Quay 会立即终止连接。若要克服此问题,您需要配置 Quay 服务,使其依赖于 Clair 的服务,如以下部分所示。
3.5.4. 配置 Quay 对 Clair 的依赖项 复制链接链接已复制到粘贴板!
在 Quay 的 systemd 服务文件中,通过设置 After=container-clairv4.service 在 [Unit] 部分中设置 Clair 服务的依赖项。要让 Clair 容器时间进行初始化,请在 [Service] 部分添加一个延迟,如 RestartSec=30。在对 Clair 配置依赖关系后,以下是修改后的 Quay 文件的示例:
/usr/lib/systemd/system/container-quay.service
更新 Quay 服务配置后,重新引导服务器并立即运行 podman ps :
最初,Quay 容器将不可用,但一旦 RestartSec delay 到期,它应当会启动:
Quay 容器的 CREATED 字段显示创建时间中的 30 秒差异,如服务定义中所配置。
登录到 quay-server.example.com 上的 Red Hat Quay registry,并确保一切已正确完成。