Какой лучший способ запустить контейнер докера? Крон или другие средства? С несколькими исходными файлами он должен тянуть от?

Все эти ответы работают в некоторых случаях, но не работают в других.

Например, вы можете полагаться на dmesg , в то время как данные журнала загрузки все еще находятся в кольцевом буфере, но, скорее всего, это приведет к ошибке на машине, которая работала в течение любого периода времени. Что еще хуже, операционная система без ОС может записать в журнал сообщение о работающем гипервизоре, и в этом случае наивный тест вроде dmesg | grep -i vmware вернет ложное срабатывание.

Тестирование в Docker совсем другое. Docker не имеет собственного / proc / cpuinfo ; вместо этого он передает информацию о хост-машине. Между тем, dmidecode не может прочитать каталог / dev / mem , невидимый Docker.

virt-what имеет обнаружение контейнеров Docker, но требует исправления, чтобы справиться с недавним изменением привилегий контейнера. Он вылетает при попытке доступа к / proc / 1 / окружающая среда до того, как достигает тестов для Docker.

Важно обратить внимание на virt-what caveat emptor:

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

В моем случае, когда я публикую учебник, который устанавливает тонну дерьма, пользователи могут не захотеть этого, я отказываюсь запускать его на голом железе с помощью этого теста:

[[ 0 < $(grep -c docker /proc/1/cgroup) ]] || [[ "X$(sudo virt-what)X" != "XX" ]] && export VIRTUALIZED=true;

Примечание : Я понимаю, что OP спрашивает конкретно о VMWare в теле вопроса, но название вопроса привлечет многих читателей (таких как я), ищущих более общий случай.

-2
09.10.2018, 00:39
2 ответа

В тексте сказано, что когда нет выбора,

A new process (if one exists in the ready queue) must be selected for execution.

Я понимаю, что это означает, что обсуждаемый выбор касается не того, какой процесс запланировать следующим, а того, можно ли запланировать исследуемый процесс. В случаях 1 и 4 нельзя. В случаях 2 и 3 можно.

Используемая здесь терминология «кооперативный» и «упреждающий» кажется мне странной; совместное планирование обычно означает, что процессы добровольно передают управление, но интерпретация «блокировки» и «прекращения» как совместного планирования несколько надуманная -, на мой взгляд.

2
28.01.2020, 05:15

В случаях 1 и 4 процессу нечего делать (в случае 1 еще, а в случае 4 когда-либо )и, следовательно, он не может быть запущен планировщиком. т. е. нет выбора :бежать или не бежать... всегда не бежать. В случаях 2 и 3 есть выбор, потому что планировщик должен решить: «Я запускаю этот процесс или другой?» Но только упреждающий планировщик сделает этот выбор, кооперативный планировщик будет ждать, пока запущенный процесс не перейдет в состояние 1 (, т.е. ожидание ввода-вывода или выдачи )или 4 (, завершение либо успешно, либо с ошибкой)

1
28.01.2020, 05:15

Теги

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