#docker #logging
#docker #ведение журнала
Вопрос:
У меня есть гостевая виртуальная машина Freebsd, работающая в контейнере docker Linux. Как мне получить журналы консоли этой виртуальной машины, чтобы они отображались в «журналах docker», пожалуйста? На данный момент в журналах docker отображаются только журналы процесса запуска в контейнере. Хотите также показать журналы последовательной консоли виртуальной машины.
Параметры запуска qemu показаны ниже. Порт telnet 8601 является последовательной консолью для виртуальной машины. Я также пытался не передавать это в qemu, и это не решило проблему с журналом docker. QEMU запускается в демонизированном режиме.
/usr/bin /qemu-system-x86_64
-демонизировать
-имя fbsdvm
-компьютер pc-0.15, accel= kvm: tcg, usb = выкл
-имя fbsdvm
-cpu SandyBridge, erms, smep, fsgsbase, pdpe1gb, rdrand, f16c, osxsave, dca, pcid, pdcm, xtpr, tm2, est, smx, vmx, ds_cpl, monitor, dtes64, pbe, tm, ht, ss, acpi, ds, vme
-m $ {VFBSDMEM}
-realtime mlock=on
-smp $ {NUM_VCPU},sockets =1
-uuid 772495e6-8658-4306- ba5f-f59c15f42f59
-тип smbios = 0, поставщик = Juniper
-тип smbios = 1, производитель = VAPP, продукт = $ {VCP_I2CID}, версия = 0.1.0
-no-user-config
-nodefaults
-rtc base = utc
-no-shutdown
-device piix3-usb-uhci, идентификатор = usb, шина = pci .0,addr= 0x1.0x2
-файл диска = ${IMG}, if = нет, идентификатор =диск-virtio-disk0, формат= qcow2, кэш = нет
-устройство virtio-blk-pci, scsi = выключено, шина = pci.0,addr=0x7, диск=диск-virtio-disk0, идентификатор = virtio-disk0, bootindex=1
-файл диска = ${HDD}, if = нет, идентификатор =диск-virtio- диск1, формат=qcow2, кэш = нет
-устройство virtio-blk-pci, scsi = выключено, шина = pci.0, addr =0x8, диск=диск-virtio-disk1, идентификатор = virtio-disk1
-файл диска = ${METAUSB}, if= нет, идентификатор =диск-virtio-disk2, формат=qcow2, кэш = нет
-устройство virtio-blk-pci, scsi= выключено, шина = pci.0, addr=0x9,диск=drive-virtio-disk2,идентификатор=virtio-disk2
-мост netdev, br= br-ext, id = hostnet0
-виртуальная сеть устройства-pci, netdev=hostnet0, id = net0, mac = $ {MAC}, bus = pci.0, addr = 0x3
-мост netdev, br= int, id = hostnet1
-виртуальная сеть устройства-pci,netdev=hostnet1, id=net1, мак=02:00:00:00:00:04, шина = pci.0, addr = 0x5
-сокет chardev, идентификатор = charserial0, хост = 127.0.0.1, порт = 8601, telnet, сервер, nowait
-устройство isa-последовательное, chardev=charserial0, идентификатор = serial0
-сокет chardev, идентификатор = charmonitor, хост = 127.0.0.1, порт = 8701, сервер, теперь
-mon chardev= charmonitor, id = монитор, режим = строка чтения
-vnc 127.0.0.1: 0
-vga cirrus
-виртуальное устройство-balloon-pci, id = balloon0, шина = pci.0, addr = 0x6
Спасибо.
Комментарии:
1. Если вы хотите, чтобы журналы были видны через
docker logs
, вам нужно будет настроить qemu для вывода журналов консоли наstdout
илиstderr
.2. Спасибо, ларски, после публикации этого я поэкспериментировал и получил журналы консоли гостевой виртуальной машины, которые отображаются в журналах docker, однако мне также нужен telnet для виртуальной машины для работы, и с этими изменениями, приведенными ниже, он подключается к нему, но больше не может попасть в последовательную консоль виртуальной машины. Вы знаете, как это исправить? Вот изменения по сравнению с исходными аргументами запуска qemu:
3. добавлен «-serial mon: stdio», удален параметр демонизации, поскольку он не будет работать с этим параметром serial mon, удален -nodefaults.
4. Кстати, это telnet localhost 8601, который предназначен для входа в виртуальную машину со стороны хоста, и это то, что больше не работает, как только я получил журналы docker для отображения журналов загрузки виртуальной машины, вот что находится в конце журналов загрузки виртуальной машины, ttyu0 интересно, в любом случае, чтобы использовать этот ttyu0, учитывая, что qemu запущен внутри контейнера? FreeBSD/amd64 (cmx) (ttyu0)