You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Podman上的独立docker-compose使用buildah而非buildx

问题本质

docker-compose默认使用buildx构建容器,但buildx会忽略podman containers/storage.conf中配置的vfs存储驱动,强制使用overlayfs,导致Ubuntu镜像构建时执行apt-get install触发跨设备链接错误。

可行解决方案

方案1:配置buildx使用vfs驱动的构建器

  1. 创建指定vfs驱动的buildx构建器并设为默认:
docker buildx create --use --name podman-vfs-builder --driver docker-container --buildkitd-flags '--storage-driver vfs'
  1. 构建时指定该构建器:
docker compose build --builder podman-vfs-builder

让buildx的存储驱动与podman保持一致,即可避免跨设备链接问题。

方案2:让docker-compose绕过buildx直接调用podman构建

通过环境变量强制禁用buildkit,同时兼容compose文件中的secrets配置:

# 禁用buildkit并屏蔽弃用警告
export DOCKER_BUILDKIT=0
export COMPOSE_IGNORE_DEPRECATIONS=1
# 确保docker-compose连接到podman socket(未配置过的话需执行)
export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
# 执行构建
docker compose build

方案3:换用podman-compose(最适配)

直接使用Podman官方提供的podman-compose工具,它原生调用podman/buildah进行构建,完全适配podman的存储配置:

# RHEL8环境下安装
sudo dnf install podman-compose -y
# 构建命令与docker-compose完全一致
podman-compose build

验证方式

执行docker buildx inspect --bootstrap查看当前构建器的存储驱动,确认显示为vfs(对应方案1);或者观察构建过程,确认未启动buildx容器(对应方案2、3)。

内容的提问来源于stack exchange,提问作者chiashurb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:35:00