Подключение к процессу в Docker
Подключение к процессу сажает терминал на главную программу уже работающего контейнера. Это не запуск второй команды рядом: терминал снова сидит на том же процессе, который служба подняла при создании копии. Выход из такого терминала обычным способом завершит главную программу, если не отсоединиться особым сочетанием клавиш.
Отдельная команда внутри копии запускает другую программу параллельно главной. Подключение же возвращает ввод именно главному процессу, как при интерактивном запуске с оболочкой. Для наглядности возьмём фоновый контейнер, чья программа печатает строки в стандартный вывод:
docker run -d --name talker alpine sh -c "while true; do echo tick; sleep 5; done"
Подключение терминала к главному
процессу talker выглядит так:
docker attach talker
В терминал пойдут повторяющиеся
строки tick с паузой между
ними.
Если отсоединиться сочетанием клавиш,
предусмотренным службой, главный
процесс продолжит работу в фоне.
Контейнер не остановится только
из-за того, что терминал закрыли
без жёсткого выхода из оболочки.
Создайте фоновый контейнер beep на alpine, где главная программа каждые десять секунд печатает слово ping в цикле.
Подключите терминал к главному процессу beep, дождитесь нескольких строк вывода и отсоединитесь без остановки контейнера.