Настройка вывода информации из Docker-контейнера в серийный порт
Чтобы создать виртуальную машину из образа Container Optimized Image и настроить перенаправление потока вывода приложения в серийный порт ВМ:
- Подготовьте облако к работе.
- Подготовьте спецификацию ВМ.
- Подготовьте спецификацию Docker-контейнера.
- Получите идентификатор образа для создания ВМ.
- Создайте ВМ.
- Проверьте результат.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Если нужный Docker-образ загружен в Container Registry, создайте сервисный аккаунт с ролью container-registry.images.puller на используемый реестр. От его имени ВМ на базе Container Optimized Image будет скачивать из реестра Docker-образ.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Если у вас еще нет сети или подсети, создайте их.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входит:
- Плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud).
- Плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).
Подготовьте спецификацию ВМ
Чтобы подготовить спецификацию ВМ, создайте файл 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-ключ_для_подключения_к_ВМ>
В конфигурации файла задайте имя пользователя и укажите публичную часть SSH-ключа для подключения к ВМ. Пару ключей для подключения по SSH необходимо создать самостоятельно.
Подготовьте спецификацию Docker-контейнера
Чтобы подготовить спецификацию 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
- Создайте ВМ с несколькими дисками.
-
Получите идентификатор образа для создания ВМ:
BashPowerShellIMAGE_ID=$(yc compute image get-latest-from-family container-optimized-image --folder-id standard-images --format=json | jq -r .id)
> $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-a \ --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!
.
- В консоли управления
-
Получите идентификатор образа для создания ВМ
Чтобы получить идентификатор последнего образа для создания ВМ, выполните:
IMAGE_ID=$(yc compute image get-latest-from-family container-optimized-image \
--folder-id standard-images \
--format=json | jq -r .id)
$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-d \
--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 в консоли управления
Проверьте результат
Чтобы проверить результат настройки вывода информации из Docker-контейнера в серийный порт:
- В консоли управления
перейдите на страницу каталога и выберите сервис Compute Cloud. - Нажмите на имя нужной ВМ
coi-vm-with-sp
. - В блоке Последовательный порт выберите порт
COM2
. Через несколько минут на экран начнет выводитьсяHello world!
.
Подробнее о работе с ВМ читайте в пошаговых инструкциях.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
- Удалите ВМ.
- Если вы зарезервировали для ВМ публичный статический IP-адрес, удалите его.