Привет, я создаю пограничный шлюз Azure IOT и пытаюсь установить на него пользовательский модуль, но у меня возникает эта ошибка:
Ошибка при вызове Create module serverModule: не удалось создать модуль serverModule вызвано: Нет такого образа: MyDockerAzureContainerServer/serverModule:0.0.1-amd64) ....
но если я побегу
docker pull MyDockerAzureContainerServer/serverModule:0.0.1-amd64
оно работает!
Кстати: я работаю над устройством Windows10, на котором запущены контейнеры Docker Linux.
Я действительно не понимаю, спасибо за любую помощь.
развертывание.json:
{
"$schema-template": "2.0.0",
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.0",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {
"Server Name": {
"username": "$CONTAINER_REGISTRY_USERNAME_user",
"password": "$CONTAINER_REGISTRY_PASSWORD_userPW",
"address": "server Name.azurecr.io"
}
}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.0",
"createOptions": {}
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.0",
"createOptions": {
"HostConfig": {
"PortBindings": {
"5671/tcp": [
{
"HostPort": "5671"
}
],
"8883/tcp": [
{
"HostPort": "8883"
}
],
"443/tcp": [
{
"HostPort": "443"
}
]
}
}
}
}
}
},
"modules": {
"serverModule": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.serverModule}",
"createOptions": {}
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.0",
"routes": {
"serverModuleToIoTHub": "FROM /messages/modules/serverModule/outputs/* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
}
}
}
(английский не мой родной язык извините)
Я использую Реестр контейнеров Azure на деле
У вас есть registryCredentials
в файле deployment.json? docs.microsoft.com/en-us/azure/iot-edge/…
Да, я знаю, и я знаю, что они хороши, потому что в лазурном я могу видеть изображение
Вы можете опубликовать весь свой deplyomen.json? (удаление всех паролей и т.д.)
Ага, выложи ^^
Я предполагаю, что «адрес»: «server.azurecr.io» содержит ваше фактическое имя ACR, правильно? (например, yourreg.azurecr.io) И ваш образ вашего модуля будет выглядеть как yourreg.azurecr.io/serverModule:0.0.1-amd64.
да, я зацензурил ^^
Наконец мне удается запустить его:
Я настроил свой докер для запуска контейнеров Windows и создал файл dockerfile.windows-amd64, когда я запускаю основные команды установки npm. для окна.
Dockerfile.windows-amd64:
FROM stefanscherer/node-windows:latest
RUN mkdir \app
WORKDIR /app
ONBUILD COPY package.json package.json
ONBUILD RUN npm install
ONBUILD RUN npm install {anny other specific dependencies} --production
ONBUILD COPY . .
CMD [ "node.cmd", "app.js" ]
как только вы это сделаете, вам нужно добавить этот файл на известные платформы, для этого измените файл module.json вашего проекта и добавьте строку windows-amd64:
{
"$schema-version": "0.0.1",
"description": "",
"image": {
"repository": "{you're Server Name}.azurecr.io/{you're Module}",
"tag": {
"version": "0.0.1",
"platforms": {
"amd64": "./Dockerfile.amd64",
"amd64.debug": "./Dockerfile.amd64.debug",
"arm32v7": "./Dockerfile.arm32v7",
"arm32v7.debug": "./Dockerfile.arm32v7.debug",
"Windows-amd64": "./Dockerfile.windows-amd64"
}
},
"buildOptions": []
},
"language": "javascript"
}
и, наконец, вам нужно изменить эту строку в файле deployment.template.json:
[...]
"modules": {
"{you're Module}": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.{you're Module}.Windows-amd64}",
"createOptions": {}
}
}
}
[...]
И он должен работать нормально.
Обратите внимание, что сейчас я запускаю приложение NodeJS в контейнере Windows на компьютере с Windows, на котором запущена док-станция Windows.
Я оставляю этот ответ, если он может помочь любому, не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы.
вы используете частный реестр контейнеров (например, Azure Container Registry) или ваш образ находится в общедоступном Dockerhub?