Есть ли что-то, для чего нельзя использовать контейнер, в то время как виртуальная машина Linux может?

Ваши команды pipe, как не конечный пункт назначения, буферизируют вывод. В конце концов он появится, но только когда накопится достаточно много вывода или команда ping завершится.

Вы можете использовать ping -c 5 google.com, чтобы установить определенное количество пакетов, которые будут отправлены, после чего ping завершится. Ваш вывод вернется, и трубы будут работать, как ожидалось.

Редактирование: другой обходной путь использует stdbuf, чтобы избежать буферизации труб и awk, чтобы избежать внутренней cut буферизации и позволяет пингу работать непрерывно:

ping www.google.com | stdbuf --output=0 awk '{print $1}' | tee /tmp/file
0
07.04.2019, 03:02
1 ответ

Is there something which a docker container can't be used for while a Linux virtual machine can?

Конечно. Контейнер — это просто процесс :, он не может вести себя как другой процессор, не может загружать другое ядро ​​и не может запускать другую операционную систему. Виртуальная машина может делать все эти вещи. Поскольку все состояние виртуальной машины сохраняется внутри гипервизора, ее можно приостановить/возобновить, перенести на другие физические хосты и выполнить аналогичные действия, которые затруднительны или невозможны при использовании существующей технологии контейнеров.

Is it correct that if you require a Linux kernel version different from the host's, you can only use a virtual machine not a docker container?

Верно. Контейнеры — это просто процессы, работающие в ядре хоста, точно так же, как и неконтейнерные -процессы на хосте.

In particular, Docker and VirtualBox seem to put KVM/QEMU at disadvantage.

У них разные варианты использования. В зависимости от того, что вы хотите сделать, любая технология может оказаться лучшим выбором.

2
28.01.2020, 02:30

Теги

Похожие вопросы