Мотивация: выполнить базовую проверку работоспособности контейнера Docker, подсчитав, что определенное количество сообщений проходит через стандартный вывод за определенный период времени.
Ближайшая цель: из оболочки, запущенной docker exec
, прочитать данные, которые передаются на стандартный вывод из основного процесса (PID 1).
Я даже не уверен, что то, что я хочу, возможно. Если это так, объяснение того, почему нет, было бы очень признательно и помогло бы расширить мои знания.
Действия по воспроизведению:
Запустите контейнер --
container1
docker run -it --name container1 ubuntu bash -c -i "COUNT=0; while true; do echo Keep the dance floor beat going; ((COUNT++)); sleep 1; echo \"Count is: \${COUNT}\"; done;"
В другом окне терминала
docker exec
запустить другой процесс в том же контейнереdocker exec -it container1 bash
Могу ли я каким-то образом tail
/print
/read
сообщения, передаваемые через стандартный вывод с помощью PID 1?
Я понимаю, что есть обходные пути — например, передача по конвейеру через tee
или иная запись на диск — но надеялся на волшебную палочку.
tee
не является действенной волшебной палочкой? Является ли немодифицированная точка входа требованием для действительного решения? Должен ли он работать внутри контейнера без добавления каких-либо дополнительных возможностей? Если да, возможно, вы ищете анобтаниум. - person BMitch   schedule 29.12.2016