Настройка вывода информации из Docker-контейнера в серийный порт
В этой инструкции вы создадите виртуальную машину из образа Container Optimized Image и настроите перенаправление потока вывода приложения в серийный порт виртуальной машины.
Перед началом работы
Если нужный Docker-образ загружен в Container Registry, то создайте сервисный аккаунт с ролью container-registry.images.puller на используемый реестр. От его имени ВМ на базе Container Optimized Image будет скачивать из реестра Docker-образ.
Создайте ВМ с Container Optimized Image и выводом серийного порта
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания ВМ на базе образа Container Optimized Image:
$ yc compute instance create-with-container --help
-
Подготовьте спецификацию ВМ. Задайте имя пользователя, укажите публичную часть SSH-ключа для подключения к ВМ и сохраните эти данные в файл
cloud-config-ports.yaml
:#cloud-config runcmd: - [ sudo, chmod, 666, /dev/ttyS1] users: - name: <имя пользователя> groups: sudo shell: /bin/bash sudo: ['ALL=(ALL) NOPASSWD:ALL'] ssh-authorized-keys: - <публичный SSH-ключ для подключения к ВМ>
-
Подготовьте спецификацию Docker-контейнера. Сохраните следующие данные в файл
container-spec-ports.yaml
:spec: containers: - image: ubuntu name: app command: ["/bin/bash", "-c", "sleep 30 && echo 'Hello World!' > /dev/ttyS1"] securityContext: privileged: true stdin: false tty: false volumeMounts: - mountPath: /dev/ttyS1 name: log-port restartPolicy: Always volumes: - name: log-port hostPath: path: /dev/ttyS1
-
Создайте ВМ с несколькими дисками.
-
Получите идентификатор образа для создания ВМ:
-
Bash
$ IMAGE_ID=$(yc compute image get-latest-from-family container-optimized-image --folder-id standard-images --format=json | jq -r .id)
-
PowerShell
> $IMAGE_ID=(yc compute image get-latest-from-family container-optimized-image --folder-id standard-images --format=json | ConvertFrom-Json).id
-
-
Создайте ВМ:
yc compute instance create \ --name coi-vm-with-sp \ --zone=ru-central1-c \ --network-interface subnet-name=<имя подсети>,nat-ip-version=ipv4 \ --metadata-from-file user-data=cloud-config-ports.yaml,docker-container-declaration=container-spec-ports.yaml \ --create-boot-disk image-id=$IMAGE_ID
Где:
--name
— имя виртуальной машины.--zone
— зона доступности.--network-interface
— сетевые настройки виртуальной машины.--metadata-from-file
— YAML-файлы метаданных для создания ВМ.--create-boot-disk
— идентификатор образа для создания загрузочного диска.
После создания виртуальная машина появится в списке ВМ в разделе Compute Cloud в консоли управления.
-
Проверьте результат.
- В консоли управления перейдите на страницу каталога и выберите сервис Compute Cloud.
- Нажмите на имя нужной виртуальной машины
coi-vm-with-sp
. - В блоке Серийный порт выберите порт
COM2
. Через несколько минут на экран начнет выводитьсяHello world!
.
-
Подробнее о работе с ВМ читайте в пошаговых инструкциях.