podman安装minIO

MinIO 镜像已不再公开

解决方案:使用社区维护的替代镜像

方案一:使用 Chainguard 镜像(推荐,最安全)

Chainguard 提供了安全、最小化的 MinIO 镜像,并且支持匿名拉取,是官方推荐的替代方案之一。

直接将你的命令中的镜像地址替换即可:

podman run -d \
  --name minio \
  -p 9000:9000 \
  -p 9001:9001 \
  -v ~/minio/data:/data:Z \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=admin" \
  cgr.dev/chainguard/minio:latest server /data --console-address ":9001"

注意:Chainguard 镜像为了安全,默认以非 root 用户运行。如果你挂载的宿主机目录(如 ~/minio/data)权限设置严格,可能需要调整目录权限。如果遇到写入权限错误,可以尝试在命令中添加 --user "0:0" 参数以 root 用户运行容器。

方案二:使用 pgsty/silo 镜像(功能最全面)我使用的这个!

pgsty/silo 是一个由社区维护的 MinIO 分支,保留了完整的功能,包括 Web 控制台和客户端工具。

这是根据 pgsty/silo 官方文档调整后的推荐命令:

# 1. 创建专用的数据目录 (推荐使用 silo 而非 minio)
mkdir -p ~/silo/data

# 2. 启动 Silo 容器
podman run -d \
  --name silo \
  -p 9000:9000 \
  -p 9001:9001 \
  -v ~/silo/data:/data:Z \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=admin123456" \
  -e "MINIO_UPDATE=off" \
  docker.io/pgsty/silo:latest server /data --console-address ":9001"

📝 关键参数说明

  • 镜像地址:建议使用完整的 docker.io/pgsty/silo:latest,以确保 Podman 能正确拉取镜像。

  • 容器名称:从 minio 改为 silo,更符合项目命名,也避免与旧容器混淆。

  • 数据目录:挂载路径从 ~/minio/data 改为 ~/silo/data,这是官方推荐的目录结构。

  • 环境变量:新增 MINIO_UPDATE=off,Silo 默认禁用了在线自更新,这个设置能避免潜在的兼容性问题。

  • 安全上下文:保留 :Z 标签,这对 Linux Mint 等启用 SELinux 的系统至关重要,可以自动配置正确的文件权限,避免你之前遇到的 file access denied 错误。

配置开机启动:

方法一:使用 Quadlet(推荐,Podman 4.4+)

Quadlet 是 Podman 内置的 systemd 生成器,你只需编写一个 .container 描述文件,systemd 会在启动时自动将其转换为服务并运行容器。-1

1. 创建 Quadlet 目录(用户级)

对于无根容器,配置文件需放在用户配置目录下:

bash
mkdir -p ~/.config/containers/systemd/

(如果容器是以 root 运行的,则目录应为 /etc/containers/systemd/)。-2-20

2. 编写 .container 文件

创建一个名为 silo.container 的文件,将你的 podman run 参数转换为 Quadlet 格式。注意,[Container] 段不包含 podman run,而是直接列出镜像和参数:

 
# ~/.config/containers/systemd/silo.container
[Unit]
Description=Silo Container (MinIO compatible)

[Container]
Image=docker.io/pgsty/silo:latest
ContainerName=silo
PublishPort=9000:9000
PublishPort=9001:9001
Volume=/home/你的用户名/silo/data:/data:Z
Environment=MINIO_ROOT_USER=admin
Environment=MINIO_ROOT_PASSWORD=admin123456
Environment=MINIO_UPDATE=off
# 注意:Quadlet 中命令和参数直接跟在一行
Exec=server /data --console-address ":9001"

[Service]
Restart=on-failure
RestartSec=5

[Install]
# 这一行决定了开机自启
WantedBy=default.target

关键点:

  • Volume 中的 ~/silo/data 需要展开为绝对路径(例如 /home/youruser/silo/data),因为 systemd 可能无法正确解析 ~。

  • [Install] WantedBy=default.target 是开机自启的关键,相当于执行了 systemctl enable。-1-2

3. 启用“linger”功能(无根模式必做)

对于无根用户服务,默认情况下只有在你登录后 systemd 用户实例才会启动。要让容器在开机后、你登录前就运行,必须为你的用户开启 lingering:

bash
sudo loginctl enable-linger "$USER"

这一步至关重要,否则 Quadlet 服务不会在启动时自动运行。-2

4. 重新加载并启动服务

先通知 systemd 重新扫描 Quadlet 文件,然后启动服务(无需 enable,因为 [Install] 段已声明):

bash
systemctl --user daemon-reload
systemctl --user start silo.service

5. 验证

检查服务状态和容器运行情况:

bash
systemctl --user status silo.service
podman ps --filter name=silo

现在,你的 Silo 容器已经设置为开机自启了。

posted on 2026-10-17 09:11  wtsgtc  阅读(19)  评论(0)    收藏  举报