archlinux使用podman部署halo
Archlinux使用podman部署Halo博客
为什么使用archlinux?
因为我无法仍受各种旧版本包的依赖与更新困难问题,使用arch可避免大部分此类问题.
安装podman
pacman -Syy
pacman -S podman podman-compose aardvark-dns
reboot
podman 与 podman-compose 平替 docker docker-compose, 使用方法基本一样, aardvark-dns 是因为目前安装podman时arch没有强制依赖这个软件包,但这个包是podman-compose多容器通信必要依赖相关issues,最后重启是因为arch的一些特性问题,需要重启才可以启动docker,podman容器类服务。
podman info
校验安装信息
建议非root用户(注1)运行容器,podman的优点就是无守护进程,支持非特权用户,安全性较高。
mkdir halo
cd halo
vim docker-compose.yaml
:set paste //启用粘贴模式防止乱码与格式问题
// 因时效性问题这里不提供docker-compose.yaml内容, 请访问:
//https://docs.halo.run/getting-started/install/docker-compose
//获取最新官方提供源文件内容粘贴即可
:wq //保存并退出vim(请不要成为随机数生成器)
修改podman容器源列表以支持不加前缀拉取容器镜像,将以下文本追加到 /etc/containers/registries.conf
文件末尾。
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
location = "hub-mirror.c.163.com"
[[registry.mirror]]
location = "mirror.baidubce.com"
[[registry.mirror]]
location = "f1361db2.m.daocloud.io"
[[registry.mirror]]
location = "ustc-edu-cn.mirror.aliyuncs.com"
[[registry.mirror]]
location = "ghcr.io"
启动容器
podman-compose -up -d
访问8090或者使用nginx代理即可
注1: podman 有一个关于用户空间的特性问题,使用非root用户运行时不要通过
su
从root或其他用户切换过来运行,这样会有用户空间权限id等缓存问题直接使用非root用户登录ssh运行。
开机自启
Systemd 支持通过 --user
参数管理用户级别的后台程序,不过这存在一个问题,如果用户退出登录后,属于该用户的后台服务会被终止。如果希望用户退出后仍然保持服务的运行,可以使用 loginctl enable-linger username
启用用户的逗留状态
--name
为以容器名称代替id,不然服务文件名会特别长,--new
是每次启动都重新创建容器而不是反复启动关闭同一个容器,-f
是将生成的服务文件内容输出为文件而不是打印在屏幕。
mkdir -p .config/systemd/user
#用户的服务文件就在这个文件夹存放
podman generate systemd --name --new -f halo
podman generate systemd --name --new -f halodb
#生成服务container-halo.service文件,复制到上一部创建的文件夹里
systemctl --user enable container-halo.service
systemctl --user enable container-halodb.service
#设置开机自启
loginctl enable-linger podman
#设置用户podman的服务可以在退出后继续运行
reboot
#重启 稍等后访问页面看看
当同时设置了
loginctl enable-linger
和systemctl --user enable
之后,就算不是root用户也可以实现容器开机自启动,无需登录保持会话。