Доступный для записи файловый дескриптор для вывода в Docker-контейнер

У меня есть приложение Python внутри Docker-контейнера, который входит в поток, который приходит из open("/proc/1/fd/1", "w") поэтому журналы видны за пределами контейнера через docker logs, Открытие этого файла proc из процесса, который не является PID 1, перестал работать в SLES 15, и я ищу обходной путь.

Вот минимальное воспроизведение проблемы с использованием стандартного bash изображение докера.

С хост-операционной системой SUSE Linux Enterprise Server 12 (SLES 12) я могу сделать следующее:

# docker run -it bash:latest

bash-5.0# echo "HELLO" > /proc/1/fd/1
HELLO
bash-5.0# bash
bash-5.0# echo "WORLD" > /proc/1/fd/1 
WORLD

Здесь даже в подоболочке, которая не является PID 1, я могу записать в стандартный вывод процесса 1, который позволяет выводить результаты в моем TTY, и, что более важно, отображаться в docker logs,

Однако на хосте SLES 15:

# docker run -it bash:latest

bash-5.0# echo "HELLO" > /proc/1/fd/1
HELLO
bash-5.0# bash
bash-5.0# echo "WORLD" > /proc/1/fd/1
bash: /proc/1/fd/1: Permission denied

Это "Отказано в доступе" - та же ошибка, что и я в своем приложении на Python. Есть ли способ сделать этот "файл" / proc доступным для записи другими процессами? Или есть более переносимый способ прямого вывода, чтобы он был виден снаружи контейнера через docker logs?

0 ответов

Другие вопросы по тегам