настройте Azure ContainerInstance на использование автономного реестра

#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’ недоступно. Пожалуйста, проверьте изображение и учетные данные реестра.