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

Docker Compose容器持续存活问题及Azure Blob存储挂载咨询

问题解决与替代方案

一、容器退出与挂载失败的修复

1. 修复容器退出问题(sleep infinity未执行)

你的dockerfile.data中使用了数组格式的CMD,这种模式下Docker会直接执行命令,不会调用Shell解析&&这类语法,导致blobfuse2 mount执行完成后容器直接退出,sleep infinity根本没运行。

修复方法二选一:

方法1:改用Shell模式的CMD

修改dockerfile.data的CMD为字符串格式:

FROM blobfuse2:latest
COPY config/ config/
RUN mkdir /tmp/.azcache && mkdir /mnt/azmnt
CMD blobfuse2 mount all /mnt/azmnt/ --config-file=config/storage_data.yaml && sleep infinity

方法2:使用启动脚本

创建start.sh脚本:

#!/bin/bash
# 执行挂载操作
blobfuse2 mount all /mnt/azmnt/ --config-file=config/storage_data.yaml
# 保持容器运行
sleep infinity

修改dockerfile.data:

FROM blobfuse2:latest
COPY config/ config/
COPY start.sh /start.sh
RUN mkdir /tmp/.azcache && mkdir /mnt/azmnt && chmod +x /start.sh
CMD ["/start.sh"]

2. 修复本地目录无内容的问题

你的docker-compose.yaml中挂载方向错误:- /mnt:/mnt/azmnt是将本地/mnt目录覆盖容器内的/mnt/azmnt,导致容器内的Blob挂载操作被覆盖,本地无法看到存储内容。

正确做法是将容器内已挂载Blob的目录映射到本地指定路径,比如:

version: "3.9"
services:
  diffusion_data:
    build:
      context: .
      dockerfile: dockerfile.data
    privileged: true 
    volumes:
      # 将容器内的/mnt/azmnt映射到本地/mnt/azmnt
      - /mnt/azmnt:/mnt/azmnt

二、Apple Silicon Mac无需VNet挂载Azure Blob的替代方案

推荐使用rclone工具,支持arm64架构,无需容器或VNet即可直接挂载:

  • 安装rclone:brew install rclone
  • 配置Azure Blob存储:执行rclone config,按照提示添加存储账户名、密钥等信息,完成后会生成一个配置名称(比如azure_blob)
  • 挂载到本地:执行rclone mount azure_blob:你的容器名 /本地挂载路径 --daemon
  • 卸载时:执行fusermount -u /本地挂载路径(或umount /本地挂载路径)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:22:21