如何将Docker / Podman容器作为Systemd服务运行

这是续集。
请从下面的链接下载并以PDF格式支持本文。

以PDF格式下载指南

关门
这是续集。

这是续集。
这是续集。

Podman和Docker等容器引擎缺乏管理系统服务的能力,例如服务停止,启动顺序,依赖关系检查和服务恢复失败。这可能是因为其他初始化应用程序(例如init和systemd)是专门开发来注入美感并达到该目的的。

好消息是,现在可以以与管理httpd,nginx或以前使用的任何其他服务相同的方式来管理Podman / Docker容器。这意味着您可以启动,停止,启用,检查主机的状态,并通常将容器作为系统服务进行管理。您将在本指南中学习如何执行此操作。

在开始之前,另一个很酷的功能是您可以使用systemd在容器启动时启动某些服务,例如安装在容器内的Nginx。

使用systemd启动容器

如果未安装podman,请运行以下命令以加快速度

######## CentOS 8/RHEL 8 ##########
sudo dnf -y install podman

`

在Ubuntu上安装Podman

请按照以下指南在Ubuntu上获取podman。

如何在Ubuntu上安装Podman

我们在同一艘游艇上航行,所以让我们使用systemd开始运行,启动,停止和检查集装箱的状态。

第1步:如果还没有图像,则拉图像

例如,让我们从Docker注册表中提取Nginx容器

$ podman pull docker.io/nginx

确保成功拉出图像

$ podman images

REPOSITORY                TAG      IMAGE ID       CREATED        SIZE   
localhost/firstapache     latest   a0c546bc3927   23 hours ago   1.68 GB
docker.io/library/nginx   latest   602e111c06b6   32 hours ago   131 MB 

步骤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
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS                 NAMES
384a42964b1b  docker.io/library/nginx:latest  nginx -g daemon o...  48 seconds ago  Up 46 seconds ago  0.0.0.0:7070->80/tcp  nginx_server

步骤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:测试设定是否有效

启动服务运行normal systemd start命令以启动服务

sudo systemctl start nginx-container

检查状态

$ systemctl status nginx-container

● nginx-container.service - Cool Nginx container
   Loaded: loaded (/etc/systemd/system/nginx-container.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-04-24 21:58:15 UTC; 9s ago
 Main PID: 3910 (podman)
    Tasks: 11 (limit: 11121)
   Memory: 32.2M
   CGroup: /system.slice/nginx-container.service
           └─3910 /usr/bin/podman start -a nginx_server

如果希望容器在系统启动时运行,请按以下步骤启用它:

$ sudo systemctl enable nginx-container

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

合编

到目前为止,我们的帆船航行是多么的愉快,我们希望我们喜欢它。结果,我能够将容器作为系统服务运行,并且体验非常好。感谢您在我们出发期间的合作。进入码头后,请点击下面的链接享受另一趟旅程。

使用Podman设置Docker容器注册表并让我们加密SSL

如何在Debian 10/9上安装Podman

在CentOS 8 / RHEL 8上安装和使用Podman

如何使用Podman和Libpod运行Docker容器

如何使用Buildah构建OCI和Docker容器映像

这是续集。
请从下面的链接下载并以PDF格式支持本文。

以PDF格式下载指南

关门
这是续集。

这是续集。
这是续集。

Sidebar