Azure Web Apps For Containers多服务共享单一持久化存储技术咨询
解决Azure Web Apps For Containers多服务共享持久化存储的方案
我来帮你搞定这个问题——其实Azure Files才是Azure Web Apps For Containers场景下实现多服务共享持久化存储的官方推荐方案,Docker Cloudstor插件并不适配Web Apps的托管环境,所以咱们直接用更靠谱的Azure Files来实现。
为什么/home目录不能共享?
每个Web Apps For Containers实例的/home目录是绑定到该实例独立的存储(要么是本地临时存储,要么是Web App专属的持久化存储),属于单实例/单服务私有,天然无法跨多个服务共享,所以这个路子走不通。
具体实现步骤
1. 创建Azure Files共享存储
首先你需要一个Azure存储账户(如果没有的话先创建一个),然后在里面创建文件共享:
- Azure Portal操作:
进入你的存储账户 → 左侧菜单选择「文件共享」→ 点击「+ 文件共享」,填写共享名称、配额(比如1024GB)后创建。 - Azure CLI命令:
az storage share create --account-name <你的存储账户名> --name <共享名称> --quota 1024
2. 将Azure Files挂载到两个Web App服务
你需要给每个Web App配置相同的Azure Files挂载,这样两个服务就能访问同一份共享存储了:
- Azure Portal操作:
- 进入第一个Web App的管理页面 → 左侧菜单选择「配置」→ 切换到「路径映射」标签页
- 点击「+ 添加Azure存储挂载」,填写以下信息:
- 名称:自定义标识(比如
shared-storage) - 存储账户:选择你刚才创建的存储账户
- 文件共享:选择你创建的文件共享
- 挂载路径:填写容器内的路径(比如
/mnt/shared,注意不要用/home) - 访问密钥:选择存储账户的访问密钥
- 名称:自定义标识(比如
- 对第二个Web App重复上述操作,确保挂载路径和存储配置完全一致。
- Azure CLI命令:
对第一个Web App执行:
对第二个Web App执行同样命令,替换az webapp config storage-account add --resource-group <你的资源组名> --name <第一个Web App名称> --custom-id shared-storage --storage-type AzureFiles --account-name <存储账户名> --share-name <共享名称> --mount-path /mnt/shared --access-key <存储账户访问密钥><第一个Web App名称>为第二个Web App的名称即可。
3. 验证共享存储是否生效
你可以在其中一个服务的容器内写入测试文件:
echo "共享存储测试内容" > /mnt/shared/test.txt
然后在另一个服务的容器内读取该文件:
cat /mnt/shared/test.txt
如果能正常读取到内容,说明共享存储配置成功了。
关于Docker Cloudstor的说明
Docker Cloudstor是针对Docker Swarm或Kubernetes集群的卷插件,而Azure Web Apps For Containers是托管的PaaS服务,并不支持直接使用第三方Docker卷插件,所以这个方案在Web Apps场景下不可行,咱们还是用官方支持的Azure Files更稳妥。
内容的提问来源于stack exchange,提问作者Vikram Shityalkar
相关产品推荐
相关产品推荐

