使用 Cloudstor 在本地 Docker 容器上安装 Azure 文件共享

使用 Cloudstor 在本地 Docker 容器上安装 Azure 文件共享

我正在开发一个需要访问 Azure 文件共享中共享数据的 docker 镜像。我想在部署到 Azure 之前在本地进行测试,而且我不使用 swarms。

我正在使用Azure CloudStor Docker 插件

我已经在本地成功安装了Cloudstor插件:

docker plugin install --alias cloudstor:azure --grant-all-permissions docker4x/cloudstor:17.06.1-ce-azure1 CLOUD_PLATFORM=AZURE AZURE_STORAGE_ACCOUNT_KEY="..." AZURE_STORAGE_ACCOUNT="..."

并使用 Docker 文件成功编译了我的容器:

FROM nvidia/cuda:10.1-base-ubuntu18.04

# Update + Prerequisites
RUN apt-get update \    
    && apt-get -y install build-essential checkinstall \
    && apt-get -y install sudo \
    && apt-get -y install curl \
    && apt-get -y install zip \
    && apt-get -y install unzip \
    && apt-get -y install cifs-utils \    
    && apt-get -y install nfs-common nfs-kernel-server

# Install Azure CLI
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash

# SMB ports
EXPOSE 137/udp 138/udp 139 445

RUN mkdir /mnt/myshare

如果我运行没有 --mount 的容器,一切都正常。

但是如果我尝试这样做:

docker run -it myImage --mount type=volume,volume-driver=cloudstor:azure,source="myAzureShare",destination="/mnt/myShare" /bin/bash

我收到此错误:

docker.exe:守护进程的错误响应:OCI 运行时创建失败:container_linux.go:345:启动容器进程导致“exec:\”--mount\”:在$PATH 中未找到可执行文件“:未知。

我需要在镜像中安装任何 CloudStor 依赖项吗?运行容器时是否需要添加任何额外参数?

编辑: 修复了上述错误。但是现在当我使用 --mount 标志时,Docker 似乎找不到该映像:

docker.exe:守护进程的错误响应:拒绝对 myImage 进行拉取访问,存储库不存在或可能需要“docker login”:拒绝:请求对资源的访问被拒绝。

如果我不使用 --mount 图像加载正常

答案1

使用 Cloudstor 在本地 Docker 容器上安装 Azure 文件共享

您可以尝试“用于 Azure 文件存储的 Docker 卷驱动程序”,它使用 SMB 和 CIFS 协议进行文件共享。您可以在这里找到源代码 -https://github.com/Azure/azurefile-dockervolumedriver
CloudStor Docker插件非常适合AWS。

即使使用 YAML 模板,您也可以在容器组中安装卷,以便组中的所有容器都可以访问。
https://docs.microsoft.com/en-us/azure/container-instances/container-instances-volume-azure-files

答案2

看起来你现在不能这样做: https://github.com/moby/moby/issues/38842 https://github.com/moby/moby/issues/39460

一个问题尚未解决,另一个问题是由于 ClodStor 使用 SMB 2.1,但本地安装需要 SMB 3.0。

相关内容