Назад | Перейти на главную страницу

Подключение файлового ресурса Azure с помощью Cloudstor в локальном контейнере Docker

Я разрабатываю образ докера, для которого требуется доступ к общим данным в общей папке Azure. Я хочу протестировать это локально перед развертыванием в Azure, и я не использую рои.

Я использую Подключаемый модуль 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? Есть ли какие-то дополнительные параметры, которые мне нужно добавить при запуске контейнера?

Редактировать: этот исправлена ​​указанная выше ошибка. Но теперь Docker не может найти изображение, когда я использую флаг --mount:

docker.exe: ответ от демона об ошибке: доступ по запросу для myImage запрещен, репозиторий не существует или может потребоваться «вход в докер»: отказано: запрошенный доступ к ресурсу запрещен.

Если я не использую --mount, изображение загружается нормально

Подключение файлового ресурса Azure с помощью Cloudstor в локальном контейнере Docker

Вы можете попробовать «Драйвер тома Docker для хранилища файлов Azure», он использует протоколы 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

Похоже, сейчас вы не можете этого сделать: https://github.com/moby/moby/issues/38842 https://github.com/moby/moby/issues/39460

Одна проблема не решена, а другая связана с тем, что ClodStor использует SMB 2.1, но SMB 3.0 требуется для локальной установки.