Постоянный сеанс экрана внутри контейнера Docker

Чтобы перебрать каждый файл в текущем каталоге и сравнить их имена файлов с желаемым шаблоном, затем установите переменную, содержащую фрагменты даты

for f in *
do 
  [[ $f =~ ^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])(.*) ]] && 
  yourvar="${BASH_REMATCH[1]}${BASH_REMATCH[2]}${BASH_REMATCH[3]}"
done

При этом используется способность bash [[использовать сопоставление регулярных выражений для помещения фрагментов даты в массив BASH _REMATCH.

0
16.07.2019, 01:37
1 ответ

Я могу воспроизвести это с помощью этого Dockerfile:

FROM centos:latest
RUN yum -y install screen && rm -rf /var/cache/yum
CMD screen -S session1 sleep 99999

когда я запускаю его с помощью docker run <imageID>, я получаюMust be connected to a terminal.

Для работы экрану требуется терминал (tty ). Решение состоит в том, чтобы добавить -tidк флагам запуска, из справки:

 -d, --detach                         Run container in background and print container ID
 -i, --interactive                    Keep STDIN open even if not attached
 -t, --tty                            Allocate a pseudo-TTY

Для справки см. https://docs.docker.com/engine/reference/run/.

3
28.01.2020, 02:39

Теги

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