诸如Podman或Docker之类的容器引擎没有功能来管理系统服务,例如停止服务、启动顺序、依赖关系检查和故障服务的恢复,本文要讲的就是这方面的内容。通过管理Podman/Docker容器,可以管理httpd、nginx或您常用的任何其他服务。换句话说,您可以使主机启动、停止、启用、检查状态,并通常将容器作为系统服务进行管理。在开始之前,另一个有用的功能是,当容器启动时,还可以使用systemd启动安装在容器中的给定服务,例如Nginx。
使用systemd启动容器 如果您没有安装podman,请运行以下命令安装。 在CentOS 8/RHEL 8上: sudo dnf -y install podman 在Ubuntu上安装Podman,可参考在Ubuntu系统上安装Podman的方法。 现在,让我们开始运行、启动、停止,并使用systemd检查我们容器的状态。 第1步:拉取图像(如果还没有图像) 作为示例,让我们从Docker注册表中提取一个Nginx容器: $ podman pull docker.io/nginx 检查图像是否成功拉出: $ podman images
第2步:使用Podman运行容器 在这一步中,我们将初始化映像以使用我们选择的名称作为映像运行,如果您使用的是CentOS/RHEL并且坚持使用SELinux,则必须打开container_manage_cgroup布尔值以使用systemd运行容器,如下所示: sudo setsebool -P container_manage_cgroup on 之后,继续运行容器: $ sudo podman run -d --name nginx_server -p 7070:80 nginx 384a42964b1b133d82320ebaa2f54407c7ca23d06154a5f413c8119026bda231 要确认容器正在运行,请运行podman ps命令: $ sudo podman ps
第3步:将容器配置为systemd服务 我们将在/etc/systemd/system/目录中创建单元配置文件,作为示例,我们将在名为/etc/systemd/system/nginx-container.service的目录中创建一个文件,在文件内部,填写以下类似的详细信息,并确保nginx_server与在第2步中运行podman运行时为容器指定的名称相同,如果不确定,只需运行“sudo podman ps”,然后检查“NAMES”列: $ sudo vim /etc/systemd/system/nginx-container.service [Unit] Description=Cool Nginx container Wants=syslog.service [Service] Restart=always ExecStart=/usr/bin/podman start -a nginx_server ExecStop=/usr/bin/podman stop -t 2 nginx_server [Install] WantedBy=multi-user.target 如此简单,我们就可以像使用systemd的任何其他服务一样管理容器了。 第4步:测试设定是否有效 启动服务,运行通常的systemd start命令以启动我们的服务: sudo systemctl start nginx-container 检查其状态: $ systemctl status nginx-container
如果您希望在系统启动时运行容器,只需按如下所示启用它: $ sudo systemctl enable nginx-container Created symlink /etc/systemd/system/local.target.wants/nginx-container.service → /etc/systemd/system/nginx-container.service. 结果,我们现在能够将容器作为系统服务运行,并且体验非常好。
相关主题 |