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,这是官方推荐的目录结构。 -
安全上下文:保留
:Z标签,这对 Linux Mint 等启用 SELinux 的系统至关重要,可以自动配置正确的文件权限,避免你之前遇到的file access denied错误。
配置开机启动:
方法一:使用 Quadlet(推荐,Podman 4.4+)
Quadlet 是 Podman 内置的 systemd 生成器,你只需编写一个 .container 描述文件,systemd 会在启动时自动将其转换为服务并运行容器。-1
1. 创建 Quadlet 目录(用户级)
对于无根容器,配置文件需放在用户配置目录下:
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:
sudo loginctl enable-linger "$USER"
这一步至关重要,否则 Quadlet 服务不会在启动时自动运行。-2
4. 重新加载并启动服务
先通知 systemd 重新扫描 Quadlet 文件,然后启动服务(无需 enable,因为 [Install] 段已声明):
systemctl --user daemon-reload
systemctl --user start silo.service
5. 验证
检查服务状态和容器运行情况:
systemctl --user status silo.service
podman ps --filter name=silo
现在,你的 Silo 容器已经设置为开机自启了。
浙公网安备 33010602011771号