Глиф Учебники

Как зайти в контейнер

Справочник · Docker · 2 минуты чтения

Bash
docker exec -it web bash

web — имя или идентификатор контейнера (список — docker ps). Откроется терминал внутри контейнера, выход — exit или Ctrl+D. Контейнер после выхода продолжает работать.

Если bash нет

В маленьких образах, особенно на основе Alpine (теги alpine), bash не установлен. Ошибка будет примерно такой:

Текст
exec: "bash": executable file not found in $PATH

Тогда запускайте sh — он есть почти везде:

Bash
docker exec -it web sh

В совсем минимальных образах (собранных FROM scratch, «distroless») нет даже sh — зайти в них нельзя, остаётся смотреть логи и копировать файлы через docker cp.

Разбор команды

Одна команда без терминала

Ключи -it не нужны, если просто выполнить команду и увидеть результат:

Bash
docker exec web ls -l /usr/share/nginx/html
docker exec web cat /etc/os-release
docker exec db psql -U postgres -c 'SELECT now();'

Под root или другим пользователем

Команда в exec запускается от того же пользователя, что и основная программа контейнера. Если образ работает не от root, а вам нужно поставить пакет или поправить файл, укажите пользователя:

Bash
docker exec -it -u root app sh

В Docker Compose

В папке проекта — по имени сервиса, ключи -it не нужны:

Bash
docker compose exec wordpress bash

Подводные камни