更改ACI上挂载的Azure文件共享上文件的所有权

时间:2018-07-26 04:57:42

标签: azure azure-container-service azure-container-instances

我有一个ACI容器实例,该实例具有根据标准ACI指令安装的文件共享。我必须编辑安装在文件共享所在目录中的文件所有权。现在只有root拥有文件。 与此非常相似的问题,但我正在寻找一个可行的解决方案。 https://github.com/Azure/azurefile-dockervolumedriver/issues/65

编辑:这是要复制的步骤

转到shell.azure.com 在命令行(bash)shell上实例化这些变量:

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 

(例如243phasldjgknw083hroawuiefh09u3urf0等)

最后,创建容器...

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

整个过程启动并填充(因此站点可以启动并且可以访问)之后,从shell登录到容器

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

查看日志时,您会看到错误消息

这是我的问题开始的地方

0 个答案:

没有答案