云网牛站
所在位置:首页 > Linux云服务器 > 将Docker/Podman容器作为系统服务运行

将Docker/Podman容器作为系统服务运行

2020-05-10 15:44:57作者:连一续稿源:云网牛站

诸如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

将Docker/Podman容器作为系统服务运行

第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

将Docker/Podman容器作为系统服务运行

第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

将Docker/Podman容器作为系统服务运行

如果您希望在系统启动时运行容器,只需按如下所示启用它:

$ sudo systemctl enable nginx-container

Created symlink /etc/systemd/system/local.target.wants/nginx-container.service → /etc/systemd/system/nginx-container.service.

结果,我们现在能够将容器作为系统服务运行,并且体验非常好。

 

相关主题

使用Podman将Docker映像发布到Docker Hub的方法

精选文章
热门文章