#azure #azure-container-instances
#azure #azure-container-instances
Вопрос:
В настоящее время я тестирую Azure и попытался развернуть свой собственный образ docker. Изображение размещено в реестре на моем сервере VServer. Реестр использует порт 5000. Когда я пытаюсь предоставить .yaml-файл с соответствующими imageRegistryCredentials не удается.
Image registry credentials:
- server: my.server.com:5000
username: me
password: abc123
az контейнер создать -g Моя группа —файл myconainer.yaml возвращает:
The server 'my.server.com:5000' in the 'imageRegistryCredentials' of container group 'MyContainerGroup' is Invalid.
It should be a valid hostname without protocol.
И если я не укажу порт, я не смогу войти в реестр.
Что я делаю не так?
Комментарии:
1. Можно ли получить доступ к вашему частному реестру из Интернета? Или к нему можно получить доступ только внутри вашей частной сети?
2. Реестр является общедоступным и размещен провайдером за пределами моей сети.
3. Вы можете попробовать просто добавить сервер реестра без порта.
Ответ №1:
Когда вы создаете экземпляр контейнера Azure из частного реестра контейнеров, доступ к реестру контейнеров должен быть доступен из Интернета, по крайней мере, Azure может получить к нему доступ, а не только из частной сети.
Если нет, я предлагаю вам поместить свое изображение в реестр контейнеров Azure, а затем создать из него экземпляр контейнера Azure. Это также частный реестр. И у него отличный контроль доступа.
Если у вас есть еще вопросы, пожалуйста, дайте мне знать. Я рад предоставить дополнительную помощь.
Обновить
Определение свойства imageRegistryCredentials
в шаблоне Azure, это также то же самое, что и в файле yaml. Для этого не нужен порт, только имя сервера. Я могу снова отобразить ошибку, которую вы получили, если добавить порт.
Попробуйте просто добавить имя сервера реестра без порта следующим образом:
apiVersion: 2018-10-01
location: eastus
name: azureContainerGroup
properties:
containers:
- name: aci-tutorial-app
properties:
image: charlesacr.azurecr.io/nginx:v1
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 80
osType: Linux
ipAddress:
type: Public
ports:
- protocol: tcp
port: '80'
imageRegistryCredentials:
- server: charlesacr.azurecr.io
username: charlesACR
password: xxxxxxxxxx
tags: null
type: Microsoft.ContainerInstance/containerGroups
Обновление-2
В результате теста, наконец, я обнаружил, что экземпляр контейнера Azure в настоящее время не поддерживает частный реестр с сертификатом, он просто поддерживает частный реестр с именем пользователя и паролем. Возможно, это будет поддерживаться в будущем, но не сейчас. Итак, если вы хотите использовать частный реестр, вам необходимо удалить сертификат аутентификации.
Вы всегда можете оставить свой отзыв по этой ссылке:https://feedback.azure.com/forums/602224-azure-container-instances.
Комментарии:
1. Спасибо за ваш ответ, но проблема не в том, что Azure не может получить доступ к серверу, а в том, что я не могу передать правильные учетные данные для входа в Azure, поскольку я не могу предоставить порт, который я хотел бы использовать для Azure.
2. @TomBlo Предоставляет ли ваш реестр доступ к Интернету с определенным портом?
3. @TomBlo Попробуете ли вы совет, который я даю в комментарии?
4. @TomBlo Есть еще вопросы? Работает ли совет? Пожалуйста, дайте мне знать, если есть обновление!
5. Я протестировал использование реестра Azure и удаление порта из имени сервера. Реестр Azure работал нормально, но на самом деле это не решает проблему, поскольку я хотел бы использовать свой реестр. При удалении порта azure не может подключиться со следующей ошибкой: изображение ‘my.server.com:5000/myregistry:runner’ в группе контейнеров ‘MyGroup’ недоступно. Пожалуйста, проверьте изображение и учетные данные реестра.