Изменение владельца файлов на общей папке Azure, смонтированной на ACI
У меня есть экземпляр контейнера ACI со смонтированным файловым ресурсом в соответствии со стандартными инструкциями ACI. Я должен отредактировать владельца файлов, смонтированных в каталоге, где смонтирован общий файловый ресурс. Прямо сейчас только root владеет файлами. Очень похож на этот вопрос, но я ищу работоспособное решение. https://github.com/Azure/azurefile-dockervolumedriver/issues/65
РЕДАКТИРОВАТЬ: Вот шаги, чтобы следовать для воспроизведения
перейдите на shell.azure.com Создайте эти переменные в командной строке (bash):
ACI_PERS_RESOURCE_GROUP=cartoetestgroup
ACI_PERS_STORAGE_ACCOUNT_NAME=cartoteststor$RANDOM
ACI_PERS_LOCATION=yourlocation (e.g. eastus)
ACI_PERS_SHARE_NAME=cartomysharename
Теперь создайте учетную запись хранения, если вы еще не сделали
az storage account create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name $ACI_PERS_STORAGE_ACCOUNT_NAME \
--location $ACI_PERS_LOCATION \
--sku Standard_LRS
* Я не могу вспомнить, почему я использовал стандартные LRS.
Экспорт строки подключения в качестве переменной среды
export AZURE_STORAGE_CONNECTION_STRING=`az storage account show-connection- string --resource-group $ACI_PERS_RESOURCE_GROUP --name
$ACI_PERS_STORAGE_ACCOUNT_NAME --output tsv`
Создать файловый ресурс
az storage share create -n $ACI_PERS_SHARE_NAME
Подтвердите имя учетной записи хранения
STORAGE_ACCOUNT=$(az storage account list --resource-group
$ACI_PERS_RESOURCE_GROUP --query "[?contains(name,'$ACI_PERS_STORAGE_ACCOUNT_NAME')].[name]" --output tsv)
echo $STORAGE_ACCOUNT
Подтвердите ключ хранения
STORAGE_KEY=$(az storage account keys list --resource-group
$ACI_PERS_RESOURCE_GROUP --account-name $STORAGE_ACCOUNT --query "[0].value" --output tsv)
echo $STORAGE_KEY
Я рекомендую записать значения переменных в следующий раз.
Если вы используете существующий общий файловый ресурс, создайте и заполните переменные:
STORAGE_ACCOUNT=cartoteststor123345
STORAGE_KEY=yourstoragekey
(например, 243phasldjgknw083hroawuiefh09u3urf0when или что-то подобное)
Наконец, создайте контейнер...
az container create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name tharbemycartodb \
--image sverhoeven/cartodb \
--dns-name-label giveme_a_name_cartodemo \
--ports 80 \
--azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
--azure-file-volume-account-key $STORAGE_KEY \
--azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
--azure-file-volume-mount-path /var/lib/tmpstor \
--cpu 2 --memory 2 \
--dns-name-label whateverIwantToBeAccessedBy \
--ip-address public \
--environment-variables CARTO_HOSTNAME=whateverIwantToBeAccessedBy.mylocation
(например, eastus).azurecontainer.io
После того, как все это загрузится и заполнится (чтобы сайт был доступен и доступен), войдите в контейнер из оболочки
az container exec --resource-group cartoetestgroup --name tharbemycartodb --exec-command "/bin/bash"
Оказавшись внутри контейнера, скопируйте содержимое в общую папку
cp -a /var/lib/postgresql/. /var/lib/tmpstor/
(Может быть, попытаться владеть папкой перед ее заполнением??)
Затем вы можете убить контейнер, когда копия будет завершена.
Если вы выполните описанные выше шаги, но используете свои существующие учетные данные
ACI_PERS_RESOURCE_GROUP
ACI_PERS_STORAGE_ACCOUNT_NAME
ACI_PERS_LOCATION
ACI_PERS_SHARE_NAME
STORAGE_ACCOUNT
STORAGE_KEY
тогда вы можете дублировать вышеперечисленное, за исключением места установки. Это должно работать, за исключением того, что нет, потому что пользователь 103 не владеет папкой, содержащей базу данных
az container create
--azure-file-volume-mount-path /var/lib/postgresql
Вы увидите сообщения об ошибках при просмотре журнала
Это где мой вопрос начался
1 ответ
Для вашей проблемы есть два шага. Я предполагаю, что ваш экземпляр контейнера является ОС Linux. Во-первых, вам нужно знать, как изменить владельца вашей точки монтирования. Вы можете перейти по этой ссылке.
Во-вторых, вам нужно знать, как выполнить команду в экземпляре контейнера Azure. Вы можете использовать команду az container exec --resource-group yourResourceGroup --name yourContainerInstance --exec-command "the change ownership command"
, Для более подробной информации, вы можете следить за этим az container exec
,
Есть момент, на который следует обратить внимание, команда chown
должен поддерживаться в экземпляре контейнера ОС.
Надеюсь, что ответ будет полезен для вас!