首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure容器实例在拖放映像时出现某些问题失败

Azure容器实例在拖放映像时出现某些问题失败
EN

Stack Overflow用户
提问于 2020-12-11 11:47:56
回答 1查看 582关注 0票数 1

我试图在ACI上运行一个映像,每当它试图在这个pulling image "mysql@sha256:asakjvnankvaknaklfvkabjaoenla"中提取映像时,容器就会失败,而在命令中,我给出了图像为mysql:latest

代码语言:javascript
复制
az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name xxxxxxx \
    --location eastus \
    --image mysql:latest \
    --dns-name-label xxxxxxxx \
    --environment-variables MYSQL_ROOT_PASSWORD=password@123 \
    --ports 3306 33060 \
    --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_NAME2 \
    --azure-file-volume-mount-path /var/lib/mysql

问题是当它试图将图片拉出mysql@sha256:asakjvnankvaknaklfvkabjaoenla时,如果拖出的图像是“mysql:最新”而不是容器工作,则该图像无法启动。

附加图片以供参考。

不知道为什么会发生这个问题

命令运行三个容器

代码语言:javascript
复制
ACI_PERS_RESOURCE_GROUP=myresourcegroup
ACI_PERS_STORAGE_ACCOUNT_NAME=mydatabasest2501
ACI_PERS_LOCATION=eastus
ACI_PERS_SHARE_NAME=mysqlshare1
ACI_PERS_SHARE_NAME2=mysqlshare2
ACI_PERS_SHARE_NAME3=mysqlshare3


#I already have storage account so only creating fileshare


# Create the file share
az storage share create \
  --name $ACI_PERS_SHARE_NAME \
  --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME
  

# Create the file share
az storage share create \
  --name $ACI_PERS_SHARE_NAME2 \
  --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME


# Create the file share
az storage share create \
  --name $ACI_PERS_SHARE_NAME3 \
  --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME  
 

 
  
  
  
echo $ACI_PERS_STORAGE_ACCOUNT_NAME

STORAGE_KEY=$(az storage account keys list --resource-group $ACI_PERS_RESOURCE_GROUP --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv)
echo $STORAGE_KEY  


az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name contaier1 \
    --location eastus \
    --image mysql:latest \
    --dns-name-label uniqueddns1 \
    --environment-variables MYSQL_ROOT_PASSWORD=password@123 \
    --ports 3306 33060 \
    --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/mysql
    
    

az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name contaier2 \
    --location eastus \
    --image mysql:latest \
    --dns-name-label uniqueddns2 \
    --environment-variables MYSQL_ROOT_PASSWORD=password@123 \
    --ports 3306 33060 \
    --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_NAME2 \
    --azure-file-volume-mount-path /var/lib/mysql


az container create \
    --resource-group $ACI_PERS_RESOURCE_GROUP \
    --name contaier3 \
    --location eastus \
    --image mysql:latest \
    --dns-name-label uniqueddns3 \
    --environment-variables MYSQL_ROOT_PASSWORD=password@123 \
    --ports 3306 33060 \
    --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_NAME3 \
    --azure-file-volume-mount-path /var/lib/mysql   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-14 02:08:11

这个问题并不是因为您认为的原因,而是将Azure文件共享安装到现有文件夹(即MySQL的依赖项)的卷出现了问题。当您挂载文件共享时,它将锁定现有文件夹,然后该文件夹中的所有文件都将不可访问。因此,由于失去了依赖关系,MySQL将不再正常工作。请参阅更多细节这里

将Azure文件共享挂载到容器实例类似于Docker绑定挂载。请注意,如果您将共享挂载到存在文件或目录的容器目录中,则这些文件或目录将被挂载所遮挡,并且在容器运行时无法访问。

有三种方法可以解决这个问题。第一种方法是不挂载文件共享,但不能持久化数据库的数据。第二种方法是将文件共享挂载到图像中不存在的新文件夹中,然后将数据复制到新文件夹。第三种方法是将依赖项复制到文件共享中,然后将文件共享挂载到容器中,它也将工作。

更新:

一个可能的解决方案是,您可以将MySQL映像推送到ACR,然后使用它创建ACI,这样,所有的事情都是相同的,那么所有的ACI都成功或失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65250816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档