Команда docker exec используется для выполнения команд внутри запущенного Docker контейнера. Она позволяет вам взаимодействовать с запущенным контейнером и необходима, например, для запуска дополнительных процессов в контейнере или для входа в контейнер в интерактивном режиме.
Ниже приведен синтаксис команды docker exec:
docker exec [опции] <container_id> <команда>
Некоторые распространенные опции для команды docker exec:
- -i, —interactive — позволяет вам взаимодействовать с командой в контейнере.
- -t, —tty — выделение tty (терминального устройства) для взаимодействия с командой в контейнере.
- —user — запуск команды от имени указанного пользователя или идентификатора пользователя и группы.
Команда docker exec позволяет выполнить команды внутри контейнера без необходимости запуска нового экземпляра контейнера. Это удобно для отладки, ввода внутрь контейнера в интерактивном режиме или запуска дополнительных процессов в уже запущенном контейнере.
Рассмотрим небольшой пример использования этой команды для мониторинга ресурсов внутри контейнера. Для этого я буду использовать запущенный на удаленной машине контейнер с Flask приложением. Как установить и запустить образ я описывал в предыдущих статьях.
Запустим контейнер:
docker run -d -p 5000:5000 --restart=always itpolice/test_app
В ответ я получил ID запущенного контейнера, который нужен для docker exec. ID активного контейнера также можно узнать командой «docker ps».
Зайдем в контейнер в интерактивном режиме командой:
docker exec -it 7acdfa8f50efba6742946c6e8b85463c92c9511a5380f2b7b122f6f9d065c239 bash
В этой команде:
- docker exec используется для выполнения команд внутри контейнера
- -it позволяет вам использовать интерактивный режим и также подключиться к терминалу контейнера
- строка с кучей знаков — ID моего контейнера
- bash указывает на то, что вы хотите войти в контейнер и запустить оболочку Bash
После выполнения этой команды, мы должны войти в контейнер и увидеть командную строку контейнера. Теперь можем выполнять команды и взаимодействовать с контейнером в интерактивном режиме.
Обновим индекс доступных пакетов:
apt-get update
Установим программу мониторинга системы и процессов htop внутри Docker контейнера:
apt-get install htop
После установки htop, вы можете запустить его, просто введя команду htop в терминале.
Теперь у нас должен быть установлен и запущен htop внутри bash-терминала в Docker контейнере.
Напоследок посмотрим, куда эта программа установилась, введя команду:
which htop
#/usr/bin/htop
Отсоединяемся от терминала классическим Ctrl + D или командой exit.