Выполнение команд докера в контейнере Azure
Я боролся гораздо дольше, чем следовало бы, и я уверен, что должен что-то делать трудным путем.
По сути, все, что я хочу сделать, это запустить образ докера в Azure (образ блокчейна eos-dev). Я прошел и создал реестр контейнера, включил административное управление и создал контейнер, используя:
az container create --resource-group docker --name eosnode --image xxx.azurecr.io/eos-dev --cpu 1 --memory 14 --ip-address public --ports 80 7777 5555 --registry-password "zzz"
Теперь, если это был локальный идентификатор экземпляра докера, просто можно запустить:
docker network create testnetwork
И я бы получил это обратно:
77af2f92d66895bbf71490b33d775a116d6d8d7be0cbd0a2b3d18ce7336cf611
Теперь я пытаюсь сделать это на удаленном лазурном контейнере следующим образом:
az container exec -g docker --name eosnode --container-name eosnode --exec-command "docker network create testnetwork"
Но он ничего не возвращает, и я понятия не имею, сделал ли он хоть что-нибудь. Что мне здесь не хватает?
2 ответа
Как вы говорите, вы просто хотите запустить образ докера в Azure. И я вижу, вы создаете экземпляр контейнера с помощью команды:
az container create --resource-group docker --name eosnode --image xxx.azurecr.io/eos-dev --cpu 1 --memory 14 --ip-address public --ports 80 7777 5555 --registry-password "zzz"
Для этого шага экземпляр контейнера создается в Azure. И вы можете получить информацию об экземпляре с помощью команды az container show
или получить логи экземпляра с помощью команды az container log
,
Также вы можете выполнить команду внутри экземпляра контейнера, используя следующую команду:
az container exec -g resrouceGroup -n instanceName "bash command"
Но если вы хотите запустить команду docker network create testnetwork
внутри экземпляра контейнера вы должны установить докер внутри образа, из которого вы создаете экземпляр контейнера.
docker network create
создает сеть докера на машине / хосте, возвращенный хеш-код является идентификатором сети. Все команды docker предполагают запуск на хосте, а не в контейнере. Сеть Docker не обязательна для запуска контейнера в экземпляре Azure Container.
Если для изображения контейнера требуется команда для запуска, обычно команду можно найти в его документе / примере с:
docker run <image> <command>
Эквивалентный способ запуска контейнера в экземпляре контейнера Azure:
az container create -g <resourceGroup> -n <name> --image <image> --command-line <command> --restart-policy <Always|OnFailure|Never>
--command-line: указать команду для запуска в контейнере
--restart-policy: определить поведение при выходе из команды.