我试图在ACI上运行一个映像,每当它试图在这个pulling image "mysql@sha256:asakjvnankvaknaklfvkabjaoenla"中提取映像时,容器就会失败,而在命令中,我给出了图像为mysql:latest。
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:最新”而不是容器工作,则该图像无法启动。
附加图片以供参考。


不知道为什么会发生这个问题
命令运行三个容器
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 发布于 2020-12-14 02:08:11
这个问题并不是因为您认为的原因,而是将Azure文件共享安装到现有文件夹(即MySQL的依赖项)的卷出现了问题。当您挂载文件共享时,它将锁定现有文件夹,然后该文件夹中的所有文件都将不可访问。因此,由于失去了依赖关系,MySQL将不再正常工作。请参阅更多细节这里。
将Azure文件共享挂载到容器实例类似于Docker绑定挂载。请注意,如果您将共享挂载到存在文件或目录的容器目录中,则这些文件或目录将被挂载所遮挡,并且在容器运行时无法访问。
有三种方法可以解决这个问题。第一种方法是不挂载文件共享,但不能持久化数据库的数据。第二种方法是将文件共享挂载到图像中不存在的新文件夹中,然后将数据复制到新文件夹。第三种方法是将依赖项复制到文件共享中,然后将文件共享挂载到容器中,它也将工作。
更新:
一个可能的解决方案是,您可以将MySQL映像推送到ACR,然后使用它创建ACI,这样,所有的事情都是相同的,那么所有的ACI都成功或失败。
https://stackoverflow.com/questions/65250816
复制相似问题