podman没有docker的dockerd那样的守护进程可以在系统重启后自动拉起容器。但我们可以使用Podman Quadlet,通过systemd实现容器生命周期管理。
准备工作
安装好podman即可。
生成.container配置
.container配置文件类似于docker compose的compose文件,用来告诉podman如何创建容器。
本文我们将通过podlet官方的ghcr.io/containers/podlet容器来生成配置。
使用compose.yaml作为模板生成
在存放compose.yaml的路径运行下面的命令,将在当前路径下生成 ${服务名}.container 文件。
podman run --rm -v .:/root ghcr.io/containers/podlet \
--file /root --overwrite --install --description test -a $PWD \
compose /root/compose.yaml
参数解析:
--rm在我们用完这个podlet容器后销毁对应的实例-v .:/root将当前目录挂载到/root--file /root存放podlet生成的配置的路径--overwrite若本就存在对应的配置则覆写--install设置为开机自启动--description test配置简介-a $PWD使用当前目录为工作目录转换compose文件中的相对路径compose配置通过compose进行生成/root/compose.yaml我们的compose文件
示例:
# /opt/frpc/compose.yaml
services:
frpc:
image: snowdreamtech/frpc
restart: unless-stopped
volumes:
- ./frpc.toml:/etc/frp/frpc.toml
network_mode: "host"
生成的配置:
# /opt/frpc/frpc.container
[Unit]
Description=test
[Container]
Image=snowdreamtech/frpc
Network=host
Volume=/opt/frpc/frpc.toml:/etc/frp/frpc.toml
[Service]
Restart=always
[Install]
WantedBy=default.target
当然也可以只生成配置,不写入文件。
podman run --rm -v .:/root ghcr.io/containers/podlet \
--install --description test -a $PWD \
compose /root/compose.yaml
应用配置
作为root用户
可以直接软链接配置或者复制配置到/etc/containers/systemd/目录。
# 这里frpc.container改成你自己的文件
ln -s $(realpath frpc.container) /etc/containers/systemd/
# 重载配置
systemd daemon-reload
这里其实已经配置好了开机自启,但是现在还没运行,可以通过systemd启动:
# 这里的frpc也要改成你的service名
systemd start frpc
作为rootless用户
首先需要设置当前用户在没有登录时仍然运行:
sudo loginctl enable-linger $USER
然后软链接配置或者复制配置到~/.config/containers/systemd/目录。
# 这里frpc.container改成你自己的文件
ln -s $(realpath frpc.container) ~/.config/containers/systemd/
# 重载配置
systemd --user daemon-reload
启动:
# 这里的frpc也要改成你的service名
systemd --user start frpc
管理容器
注意如果是rootless用户,在systemctl/journalctl后面要加上参数--user。
查看状态:
# 这里的frpc也要改成你的service名
systemctl status frpc
启动:
# 这里的frpc也要改成你的service名
systemctl start frpc
停止:
# 这里的frpc也要改成你的service名
systemctl stop frpc
重启:
# 这里的frpc也要改成你的service名
systemctl restart frpc
日志:
# 这里的frpc也要改成你的service名
journalctl -u frpc -f
# -f 持续监控日志
若要取消开机自启动,可以在生成的配置中删除下面字段:
[Install]
WantedBy=default.target
或者不带--install参数重新生成配置。