Существует два способа взаимодействия с работающим контейнером
- интерактивный флаг
Как вы уже упоминали, он уже говорит
Держите STDIN открытым, даже если он не подключен
Что, по моему пониманию, означает, что он будет читать входы от вашего терминала / консоли и реагирует или представляет вывод на него. Если вы запустите docker run --tty alpine /bin/sh
и docker run --tty --interactive alpine /bin/sh
. Один с --interactive
будет реагировать на него.
присоединить
Присоединить к запущенному процессу
Если docker контейнер был запущен с помощью команды /bin/bash
, вы можете получить к нему доступ с помощью attach, если нет, то вам нужно выполнить команду для создания экземпляра bash внутри контейнера, используя exec
.
Подробнее : Если контейнер docker запущен с использованием /bin/bash
, он становится контейнером PID 1, а команда attach
присоединит вас к PID 1.
exe c
Создает новый процесс
Если вы хотите создать новый процесс внутри контейнера, чем exe c, он используется как exec
, используется для выполнения apt-get
Команда внутри контейнера без присоединения к нему или запуска узла или сценария python.
Например: docker exec -it django-prod python migrate
См. здесь -i
для интерактивного и -t
для --tty
это псевдо-TTY. Интерактивный, так что вы можете ввести, если что-то подсказывает эта команда.