Сбой экземпляра контейнера Azure из-за какой-либо проблемы при извлечении изображения

#azure #azure-container-instances

#azure #azure-container-instances

Вопрос:

Я пытаюсь запустить изображение в 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: latest», контейнер работает.

Прикрепление изображения для повторного использования. Успешно завершенный контейнер

Сбой контейнера Не уверен, почему возникает эта проблема

Команда для запуска трех контейнеров

 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   
    
    
 

Комментарии:

1. ну, посмотрите на журналы? изображение успешно извлечено, так почему вы думаете, что это как-то связано с этим

2. вы когда-нибудь это понимали? У меня ТОЧНО такая же проблема. причина определенно связана с одновременным созданием нескольких контейнеров с использованием одного и того же изображения . я создаю 7 групп контейнеров одновременно, и 1-2 из них всегда извлекают контейнер, используя digest ( container@shah256:... ) против image tag ( container:0.0.5 ) . понятия не имею, почему это происходит или почему контейнер уничтожается. к вашему сведению, у меня нет общих файловых ресурсов, и мой контейнер находится в ACR. Я думаю, что, возможно, какое-то странное кэширование происходит за кулисами с помощью ACI при извлечении одного и того же изображения

Ответ №1:

Проблема возникает не по той причине, о которой вы думаете, а из-за проблемы с томом, который подключает общий файловый ресурс Azure к существующей папке, которая зависит от MySQL. Когда вы подключаете общий файловый ресурс, он закрывает существующую папку, после чего все файлы в этой папке будут недоступны. Поэтому MySQL больше не будет работать нормально, потеряв зависимости. Смотрите более подробную информацию здесь.

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

Есть три способа решить эту проблему. Первый способ заключается в том, чтобы не монтировать общий файловый ресурс, но тогда вы не сможете сохранить данные базы данных. Второй способ — подключить общий файловый ресурс к новой папке, которая не существует в образе, а затем скопировать данные в новую папку. Третий способ заключается в том, что скопируйте зависимости в общий файловый ресурс, а затем подключите общий файловый ресурс к контейнеру, это тоже будет работать.

Обновить:

Возможное решение заключается в том, что вы можете поместить образ MySQL в ACR, а затем использовать его для создания ACI, таким образом, все вещи одинаковы, тогда, возможно, все ACI завершатся успешно или завершатся неудачей.

Комментарии:

1. Если проблема заключается в монтировании тома, то он всегда должен работать неправильно, иногда не работает, а иногда сбой — это неоднозначное поведение. Оба изображения, которые я прикрепил, имеют монтирование тома, одно работает, а другое нет, и общий доступ к файлам для них также отличается, я попытался развернуть 3 контейнера (все с монтированием тома), и два работают, и только один выходит из строя.

2. @yatharthmeena Три контейнера? Как вы их настраиваете? Можете ли вы поделиться более подробной информацией? И что вы подразумеваете под словом «иногда»? Одна и та же команда иногда работает без ошибок, а иногда не работает?

3. Я добавил, о чем идет речь, там контейнер с именем container1 и container3 запускались нормально, а container2 я столкнулся с проблемой

4. @yatharthmeena Единственное, что я нахожу отличающимся при запуске изображения в локальном режиме, — это право собственности на папку mysql . Но другие, похоже, не проблема. Что показывает журнал контейнера сбоя?

5. @yatharthmeena Это подключено. Можете ли вы поделиться всеми словами события уничтожения ACI?