![使用 Cloudstor 在本地 Docker 容器上安装 Azure 文件共享](https://linux22.com/image/742191/%E4%BD%BF%E7%94%A8%20Cloudstor%20%E5%9C%A8%E6%9C%AC%E5%9C%B0%20Docker%20%E5%AE%B9%E5%99%A8%E4%B8%8A%E5%AE%89%E8%A3%85%20Azure%20%E6%96%87%E4%BB%B6%E5%85%B1%E4%BA%AB.png)
我正在开发一个需要访问 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。