开机自动运行容器

本文介绍了如何在Linux系统中设置Podman或Docker容器开机自动启动。内容包括创建容器服务,设置systemd单元文件,测试开机启动服务的正常运行,以及在容器数量较多时使用容器编排(如docker-compose.yml)进行服务管理。
摘要由CSDN通过智能技术生成

一、创建容器

假设我们已经创建好了一个容器,如下图所示,名字为centos7
在这里插入图片描述

二、创建服务

为了让容器能够开机自动运行,需要以服务的形式存在。
在/etc/systemd/system/目录,为centos7容器创建一个systemd单元配置文件:

sudo vim /etc/systemd/system/centos7-container.service

文件内容如下:

[Unit]
Description=centos7 container
After=firewalld.service ufw.service

[Service]
Restart=always
ExecStart=/usr/bin/podman start -a centos7
ExecStop=/usr/bin/podman stop centos7

[Install]
WantedBy=multi-user.target

需要注意的是ExecStart以及ExecStop命令中的容器名字一定要与要实际的容器名字完全一致

如果容器中有端口需要让外部访问,比如容器中的SSHD服务,需要按照配置与管理Ubuntu 21.10一文中所述,修改podman网络模式,这样即使开启了防火墙也不会被防火墙屏蔽,同时要求容器服务在防火墙服务之后启动,否则不能访问容器中的端口。

如果是CentOS系统,防火墙服务默认是firewalldubuntu系统默认是ufw,笔者是在ubuntu中为了方便使用cockpit管理,同时安装了firewalld服务,所以需要在firewalld以及ufw服务之后。

还有一种更加方便的方式,直接使用podman来生成,我们使用podman generate --help查看用法,可以看到可以生成两种文件:一种是生成Kubernetes的YAML文件,另一种就是生成systemd的单元文件。

witton@witton:~$ podman generate --help
Generate structured data based on containers, pods or volumes.

Description:
  Generate structured data (e.g., Kubernetes YAML or systemd units) based on containers, pods or volumes.

Usage:
  podman generate [command]

Available Commands:
  kube        Generate Kubernetes YAML from containers, pods or volumes.
  systemd     Generate systemd units.

生成systemd的单元文件,正是我们想要的。再输入podman generate systemd --help查看用法:

witton@witton:~$ podman generate systemd --help
Generate systemd units.

Description:
  Generate systemd units for a pod or container.
  The generated units can later be controlled via systemctl(1).

Usage:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值