#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?